これまで JSON を使用したことがないため、その構文に慣れていません。
現時点では、さまざまなデータを含む複数の配列があります。
それぞれが複数のデータを持つ複数の配列を含む 1 つの JSON オブジェクトを作成したいと思います。
例えば
それぞれ異なる車種の複数の配列を含む、cars と呼ばれるオブジェクト。各配列には、車のモデルと、ドアの数などの他のタイプのデータが含まれます (架空の例にすぎないため、実際には関係ありません)。
誰かが構文を例で説明してくれれば幸いです。
これまで JSON を使用したことがないため、その構文に慣れていません。
現時点では、さまざまなデータを含む複数の配列があります。
それぞれが複数のデータを持つ複数の配列を含む 1 つの JSON オブジェクトを作成したいと思います。
例えば
それぞれ異なる車種の複数の配列を含む、cars と呼ばれるオブジェクト。各配列には、車のモデルと、ドアの数などの他のタイプのデータが含まれます (架空の例にすぎないため、実際には関係ありません)。
誰かが構文を例で説明してくれれば幸いです。
最も外側のレベルでは、JSON オブジェクトは で始まり、{
で終わり}
ます。
サンプルデータ:
{
"cars": {
"Nissan": [
{"model":"Sentra", "doors":4},
{"model":"Maxima", "doors":4},
{"model":"Skyline", "doors":2}
],
"Ford": [
{"model":"Taurus", "doors":4},
{"model":"Escort", "doors":4}
]
}
}
JSON が data という変数に割り当てられている場合、それにアクセスするには次のようになります。
data.cars['Nissan'][0].model // Sentra
data.cars['Nissan'][1].model // Maxima
data.cars['Nissan'][2].doors // 2
for (var make in data.cars) {
for (var i = 0; i < data.cars[make].length; i++) {
var model = data.cars[make][i].model;
var doors = data.cars[make][i].doors;
alert(make + ', ' + model + ', ' + doors);
}
}
別のアプローチ (インデックス付き配列ではなく、車のモデルに連想配列を使用):
{
"cars": {
"Nissan": {
"Sentra": {"doors":4, "transmission":"automatic"},
"Maxima": {"doors":4, "transmission":"automatic"}
},
"Ford": {
"Taurus": {"doors":4, "transmission":"automatic"},
"Escort": {"doors":4, "transmission":"automatic"}
}
}
}
data.cars['Nissan']['Sentra'].doors // 4
data.cars['Nissan']['Maxima'].doors // 4
data.cars['Nissan']['Maxima'].transmission // automatic
for (var make in data.cars) {
for (var model in data.cars[make]) {
var doors = data.cars[make][model].doors;
alert(make + ', ' + model + ', ' + doors);
}
}
編集:
訂正: JSON オブジェクトは で始まり で終わりますが、で始まり で終わる{
JSON}
配列 (最も外側のレベル) を持つことも有効です。[
]
また、元の JSON データの重大な構文エラーが修正されました。JSON オブジェクトのすべてのキー名は二重引用符で囲む必要があり、JSON オブジェクトまたは JSON 配列のすべての文字列値も二重引用符で囲む必要があります。
見る:
私が読んでいる良い本: Nicholas C. Zakas による Professional JavaScript for Web Developers 3rd Edition には、JSON 構文に関する次の情報があります。
「JSON 構文では、3 種類の値を表現できます」。
あなたが興味を持っているものに関して、それは言います:
「配列は、JavaScript の配列リテラル表記を使用して JSON で表されます。たとえば、これは JavaScript の配列です。
var values = [25, "hi", true];
同様の構文を使用して、JSON でこの同じ配列を表すことができます。
[25, "hi", true]
変数またはセミコロンがないことに注意してください。配列とオブジェクトを一緒に使用して、次のようなより複雑なデータのコレクションを表すことができます。
{
"books":
[
{
"title": "Professional JavaScript",
"authors": [
"Nicholas C. Zakas"
],
"edition": 3,
"year": 2011
},
{
"title": "Professional JavaScript",
"authors": [
"Nicholas C.Zakas"
],
"edition": 2,
"year": 2009
},
{
"title": "Professional Ajax",
"authors": [
"Nicholas C. Zakas",
"Jeremy McPeak",
"Joe Fawcett"
],
"edition": 2,
"year": 2008
}
]
}
この配列には、本を表す多数のオブジェクトが含まれています。各オブジェクトにはいくつかのキーがあり、そのうちの 1 つは「著者」であり、これが別の配列です。オブジェクトと配列は通常、JSON データ構造の最上位部分であり (必須ではありませんが)、多数のデータ構造を作成するために使用できます。」
JavaScript オブジェクトを JSON 文字列にシリアライズ (変換) するには、JSON オブジェクトの stringify() メソッドを使用できます。Mark Linusの回答の例:
var cars = [{
color: 'gray',
model: '1',
nOfDoors: 4
},
{
color: 'yellow',
model: '2',
nOfDoors: 4
}];
cars は JavaScript オブジェクトになりました。それを JSON オブジェクトに変換するには、次のようにします。
var jsonCars = JSON.stringify(cars);
どちらが得られますか:
"[{"color":"gray","model":"1","nOfDoors":4},{"color":"yellow","model":"2","nOfDoors":4}]"
逆に、JSON オブジェクトを JavaScript オブジェクトに変換するには (これを解析と呼びます)、parse() メソッドを使用します。さらに情報が必要な場合は、これらの用語を検索してください...または本を入手してください。多くの例があります。
もう一つの例:
[
[
{
"@id":1,
"deviceId":1,
"typeOfDevice":"1",
"state":"1",
"assigned":true
},
{
"@id":2,
"deviceId":3,
"typeOfDevice":"3",
"state":"Excelent",
"assigned":true
},
{
"@id":3,
"deviceId":4,
"typeOfDevice":"júuna",
"state":"Excelent",
"assigned":true
},
{
"@id":4,
"deviceId":5,
"typeOfDevice":"nffjnff",
"state":"Regular",
"assigned":true
},
{
"@id":5,
"deviceId":6,
"typeOfDevice":"44",
"state":"Excelent",
"assigned":true
},
{
"@id":6,
"deviceId":7,
"typeOfDevice":"rr",
"state":"Excelent",
"assigned":true
},
{
"@id":7,
"deviceId":8,
"typeOfDevice":"j",
"state":"Excelent",
"assigned":true
},
{
"@id":8,
"deviceId":9,
"typeOfDevice":"55",
"state":"Excelent",
"assigned":true
},
{
"@id":9,
"deviceId":10,
"typeOfDevice":"5",
"state":"Excelent",
"assigned":true
},
{
"@id":10,
"deviceId":11,
"typeOfDevice":"5",
"state":"Excelent",
"assigned":true
}
],
1
]
$.each(data[0], function(i, item) {
data[0][i].deviceId + data[0][i].typeOfDevice + data[0][i].state + data[0][i].assigned
});
JSON コードをよりよく理解するには、http://www.jsoneditoronline.org/を使用してください
var cars = [
manufacturer: [
{
color: 'gray',
model: '1',
nOfDoors: 4
},
{
color: 'yellow',
model: '2',
nOfDoors: 4
}
]
]