JSON 配列を使用することの違いと利点は何ですか。
{
thing:[
{ },
{ }
]
}
対 JSON オブジェクト:
{
thing:{
{ },
{ }
}
}
array
anとanの違いobject
は
key
オブジェクトは、などを使用して設定されvalue
ます。
person.age = 15;
値が変数の場合key
、次のようにアクセスできます。
var key = "age";
alert(person[key]);
配列はinteger[1]インデックスを使用し、値を取ります。
player[1].score += 1000;
[1]はい、私は知っています。JavaScriptでは、整数インデックスは実際には舞台裏で文字列に変換されます。それを無視してください。JSONについて考えるときは、特に整数値をとる配列について考えてください。
オブジェクト - キーと値、配列 - 整数。これまたはあれをいつ使用しますか?
配列とオブジェクトは、それぞれ「ある/ある」と「ある」と考えています。例として「フルーツ」を使用してみましょう。
フルーツ配列のすべてのアイテムは、フルーツのタイプです。
array fruit : [orange, mango, banana]
. 配列には、オブジェクト、文字列、数値、配列を含めることができますが、オブジェクトと配列のみを扱うことができます。
array fruit : [orange:[], mango:{}, banana:{}]
. オレンジも配列であることがわかります。これは、オレンジ色に変化するすべてのアイテムがオレンジのタイプであることを意味します。たとえば、bitter_orange、mandarin、sweet_orange などです。
果物オブジェクトの場合、その中のアイテムは果物の属性です。したがって、果物には
object fruit :{seed:{}, endocarp:{},flesh:{}}
これは、シード オブジェクト内のすべてのものがシードのプロパティであることも意味します。たとえば、色、
JSON 配列は、オブジェクトのコレクションを表します。JS では、 、slice
、pop
などのコレクション関数がたくさんありpush
ます。オブジェクトには、より多くの生データがあります。
表示する2番目のフォームは、実際には有効なJSONではありません。「thing」オブジェクト内の各オブジェクトには、アクセスするために何らかの並べ替えまたはプロパティ名が必要になるためです。
あなたの質問に答えるために、違いは、最初のケースでは、obj.thing[0]
またはのような配列アクセスを使用して「もの」のオブジェクトにアクセスするということobj.thing[1]
です。2番目のケースでは、適切なプロパティ宣言がある場合は、次のようにアクセスします。obj.thing.property
通常、JSON配列は、同様のアイテムのグループを格納するために使用されますが、オブジェクトは、単一のアイテムのさまざまなプロパティのグループを含むために使用されます。
JSON は主に、JavaScript オブジェクトを文字列にシリアライズできる言語です。したがって、JSON 文字列を逆シリアル化すると、javascript オブジェクト構造を取得する必要があります。json が object1 から object100 までの 100 個のオブジェクトを格納するオブジェクトに逆シリアル化されると、非常に不便になります。ほとんどのデシリアライザーは、使用している言語で文字列を実際のオブジェクト構造に変換できるように、既知のオブジェクトと既知のオブジェクトの配列があることを期待します。また、これはオブジェクト指向設計の哲学があなたに答える質問です。
JSON オブジェクトは、次を使用して変換できますtoJSON
。
function kryptonite(key)
{
var replacement = {};
for(var __ in this)
{
if(__ in alias)
replacement[__] = this[__]
}
return replacement;
}
var alias = {"Clark":"","phone":""};
var contact = {
"Clark":"Kent",
"Kal El":"Superman",
"phone":"555-7777"
}
contact.toJSON = kryptonite;
var foo = JSON.stringify(contact)
JSON 配列は、次を使用して変換できますmap
。
var contact = {
"Clark":"Kent",
"Kal El":"Superman",
"phone":"555-7777",
"home":[{"present":"Metropolis"},{"past":"Krypton"},{"future":"Phantom Zone"}]
}
var filter = {"past":"","future":""}
function junction(value, index)
{
for (var __ in filter) if(value[__]) return value[__]
}
var island = contact.home.map(junction);