2013-03-04 47 views
16

Tôi đang cố gắng đếm chiều dài của phần tử mảng JSON. Tôi biết đếm chiều dài của mảng bằng cách sử dụng json.array.length. Đó là cần phải tìm thấy có bao nhiêu mục trong mỗi chỉ mục.cách đếm chiều dài của phần tử mảng JSON

Nếu mảng của tôi là:

{"shareInfo":[{"id":"1","a":"sss","b":"sss","question":"whi?"}, 
    {"id":"2","a":"sss","b":"sss","question":"whi?"}, 
    {"id":"3","a":"sss","b":"sss","question":"whi?"}, 
    {"id":"4","a":"sss","b":"sss","question":"whi?"}]} 

Sau đó, tôi cần phải tìm chiều dài của {"id":"1","a":"sss","b":"sss","question":"whi?"}. Trong này có bốn mục. Tôi đã thử điều này với data.shareInfo[i].length. Nhưng nó tạo ra lỗi.

Hãy ai cho tôi biết làm thế nào để tìm ra chiều dài .... Cảm ơn ....

+0

Đây có phải là JSON hoặc một mảng thực tế không? – Brad

+0

không có thứ gì như một mảng json. có json ** STRINGS **. nếu đó là một mảng, thì đó là javascript gốc và không phải là "json". –

Trả lời

38

Trước khi đi trả lời đọc Documentation này một lần. Sau đó, bạn hiểu rõ câu trả lời.

Hãy thử tính năng này Có thể phù hợp với bạn.

Object.keys(data.shareInfo[i]).length 
+0

Cảm ơn bạn đã làm việc cho tôi ... Cảm ơn bạn rất nhiều ... –

+0

nó chỉ được hỗ trợ cho IE9 + ... –

9

Đầu tiên nếu đối tượng bạn đang làm việc với là một chuỗi thì bạn cần phải phân tích nó sau đó tìm ra chiều dài của các phím:

obj = JSON.parse(jsonString); 
shareInfoLen = Object.keys(obj.shareInfo[0]).length; 
+0

Nó tạo ra lỗi 'shareInfo' không được xác định. Nhưng tôi có mảng được gọi là 'shareInfo' –

+0

@ahjmorton câu trả lời của bạn là đúng cho các mảng' javascript'. Nếu nó là mảng json thì nó phải là 'Object.keys (data.shareInfo [i]). Length' – james

-1

tôi nghĩ bạn nên thử

data = {"shareInfo":[{"id":"1","a":"sss","b":"sss","question":"whi?"}, 
{"id":"2","a":"sss","b":"sss","question":"whi?"}, 
{"id":"3","a":"sss","b":"sss","question":"whi?"}, 
{"id":"4","a":"sss","b":"sss","question":"whi?"}]}; 

ShareInfoLength = data.shareInfo.length; 
alert(ShareInfoLength); 
for(var i=0; i<ShareInfoLength; i++) 
{ 
alert(Object.keys(data.shareInfo[i]).length); 
} 
0

Đầu tiên, không có thứ gì như đối tượng JSON. JSON là một định dạng chuỗi có thể được sử dụng như một biểu diễn của một đối tượng Javascript theo nghĩa đen.

Kể từ khi JSON là một chuỗi, Javascript sẽ đối xử với nó như một chuỗi, và không thích một đối tượng (hoặc mảng hoặc bất cứ điều gì bạn đang cố gắng sử dụng nó như.)

Đây là một tài liệu tham khảo JSON tốt để làm rõ điều này sự khác biệt:

http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/

vì vậy, nếu bạn cần thực hiện các nhiệm vụ nêu tại câu hỏi của bạn, điều duy nhất bạn rất có thể là viết một phân tích cú pháp tùy chỉnh, hoặc chuyển đổi chuỗi JSON để một đối tượng. Có một số thư viện để thực hiện việc này. Nhìn vào http://www.json.org/js.html để tham khảo.

+0

Bạn nói đúng. Nhưng chúng ta có thể chuyển các giá trị từ máy chủ bằng cách sử dụng JSONarray. Để lưu trữ, chúng ta cần tạo 'JSONarray' - >> rồi' toJsonTree' Sau đó chúng ta có thể chuyển 'object' thành' String'. Ở phía khách hàng, chúng tôi sẽ nhận được kết quả như trên (như mảng trong câu hỏi). – james

Các vấn đề liên quan