5

重複の可能性: JavaScript オブジェクトの長さ (つまり、連想配列)

次の形式のJSONがあります

[{"student":{"name" : "ABCD",
        "age":8,
        }
    "user":{ "firstName":"ABCD",
            "age": 9,
        }
        },
   {"student":{"name" : "XCYS",
        "age":10,
        }
    "user":{ "firstName":"GGG",
            "age": 11,
        }
},]

を使用してみ(data.student[i].length)ましたが、うまくいきませんでした (オブジェクトの長さを確認するためだけに) (data.user[i])

JSON 内の 1 つのオブジェクトの長さを取得する方法と、それを効果的に表示する方法について、基本的に非常に混乱しています。これどうやってするの?

4

5 に答える 5

2

すべてのキーを引用符で囲む必要があるため、質問のコンテンツは有効な JSON として解析されません (そのため、"age": 11代わりに を使用する必要がありますage: 11)。オブジェクト内のすべてのキーと値のペアはコンマで区切る必要があります (そのため、"firstName": "GGG", "age": 11代わりに を使用する必要があり"firstName": "GGG" "age": 11ます。外側の配列にも末尾のコンマがあります。

JSON.parse(data)有効な JSON がある限り、IE7 より新しいすべてのブラウザーで文字列を実際のオブジェクトに変換するために使用できるはずです。オブジェクトに解析されたら、次のものを使用できます。

var data = "your JSON string";
var object = JSON.parse(data);

console.log(object.length); // the number of objects in the array
console.log(object[0].student.name; // the name of the first student

IE7 以前のブラウザーをサポートしている場合は、Douglas Crockford の JSON ポリフィル ( https://github.com/douglascrockford/JSON-js ) を確認してください。

于 2012-08-06T07:30:42.083 に答える
1

いくつかの Web サイトで json 文字列を検証してください http://jsonformatter.curiousconcept.com/

JavaScript はスクリプト言語であるため、構文エラーが発生した時点でスクリプトを解釈し、解釈を終了します。ブラウザで JavaScript コンソールを使用してみてください

IE - 開発者ツール

Firefox - firebug プラグイン

于 2012-08-06T07:37:07.137 に答える
1

あなたが持っている実際のオブジェクトが有効であり(コンマが欠落していないなど)、文字列を正しく解析したと仮定しましょう。配列インデックスを使用してオブジェクトにアクセスしようとしており、その逆も同様です。オブジェクトをゼロから再構築しましょう。

まず、配列があります。

[]

を使用して、配列の最初の要素にアクセスしますdata[0]。最初の要素はオブジェクトです。

[
    {}
]

オブジェクトには 2 つのキーがあり、どちらもオブジェクトを保持します。

[
    {
        "student": {},
        "user": {}
    }
]

studentでキーにアクセスしますdata[0].student。2 つのキーを持つオブジェクトが含まれています。

[
    {
        "student": {
            "name": "ABCD",
            "age": 8
        },
        "user": {}
    }
]

そのオブジェクトの値の数を次のように取得します。

Object.keys( data[0].student ).length;

より良いブラウザー サポートについては、JavaScript オブジェクトの長さを参照してください。

于 2012-08-06T07:38:19.630 に答える
0

まず、json が正しく構造化されていません。一部の要素名に引用符がない、commsa が間違った場所にある、欠落しているなどがあります。あなたのものとこれを比較してください。

 var json = [{"student":{"name" : "ABCD","age":8}, "user":{ "firstName":"ABCD", "age": 9}},
            {"student":{"name" : "XCYS","age":10}, "user":{ "firstName":"GGG", "age": 11}}
            ];

json を縦に広げるよりも、そのように校正する方が簡単です。次に、単純なループを使用します。

    for(var ix in json)
{
        alert(json[ix].student.name +"="+json[ix].student.age);
}

うまくいけば、そこからどのように進むかがわかります。

于 2012-08-06T07:48:44.043 に答える
0

私はそれを解析する方法を考え出した、非常に単純なようだ

私は使用data[i].student.nameし、data[i].user.name

これは正しい値を警告しているようです

回答ありがとうございました!!

于 2012-08-06T21:10:36.813 に答える