2013-03-04 3 views
16

JSON配列要素の長さを数えようとしています。私はjson.array.lengthを使って配列の長さを数えます。それは、すべてのインデックスのアイテム数を調べる必要があります。JSON配列要素の長さを数える方法

私の配列の場合:

{"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?"}]} 

それから私は{"id":"1","a":"sss","b":"sss","question":"whi?"}の長さを見つける必要があります。これには4つのアイテムがあります。私はdata.shareInfo[i].lengthでこれを試しました。しかし、それはエラーを生成します。

あなたが扱っているオブジェクトは、あなたがそれを解析する必要がある文字列であれば誰でも、その後の長さを把握おかげで....

+0

これはJSONか実際の配列ですか? – Brad

+0

json配列のようなものはありません。 json ** STRINGS **があります。それが配列の場合、それはネイティブのjavascriptであり、 "json"ではありません。 –

答えて

38

を試みるべきだと思います。それからあなたはその答えをはっきりと理解する。

これはあなたのために働くかもしれません。

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

ありがとうございます...ありがとうございました... –

+0

これはIE9 +でのみサポートされています... –

9

まず....長さを見つける方法を教えてくださいキー:

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

'shareInfo'が定義されていないというエラーを生成します。しかし、私は 'shareInfo'という配列を持っています –

+0

@ahjmortonあなたの答えは' javascript'配列に対して正しいです。もしそれがjson配列であれば 'Object.keys(data.shareInfo [i])。length'でなければなりません。 – james

-1

私はあなたが一度読んで、このDocumentationに答えるために行く前

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

まず、JSONオブジェクトのようなものはありません。 JSONは、Javascriptオブジェクトリテラルの表現として使用できる文字列形式です。

JSONが文字列であるので、Javascriptが文字列のように扱う、およびオブジェクト好きではないだろう(あるいは配列またはものは何でもとしてそれを使用しようとしているが。)ここで

はこれを明確にする良いJSON参照です違い:

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

、あなたの質問に記載されたタスクを達成する必要があるのであれば、あなたができる唯一のことはとてもカスタムパーサーを書き込み、またはJSON文字列がオブジェクトに変換されます。これを達成するためのライブラリがいくつかあります。参照のためにhttp://www.json.org/js.htmlを見てください。

+0

あなたは正しいです。しかし、JSONarrayを使ってサーバーから値を渡すことができます。これをアーカイブするには、 'JSONarray' - >' toJsonTree'を作成する必要があります。次に、 'object'を' String'に変換することができます。クライアント側では、上記の結果を受け取ります(問題の配列として)。 – james

関連する問題