JSONObjectとJSONArrayの違い


99

Googleをざっと見てみたところ、構文の観点からは違いを説明するこのリンクが見つかりました。

プログラミングシナリオでは、どちらが優先されるのでしょうか。

回答:


186

AndroidでJSONデータを使用JSONArrayしている場合、を使用して、配列ブラケットで始まるJSONを解析します。JSONの配列は、関連するアイテムのコレクションを整理するために使用されます(JSONオブジェクトの場合もあります)。
例えば:[{"name":"item 1"},{"name": "item2} ]

一方、JSONObject中括弧で始まるJSONを処理する場合に使用します。通常、JSONオブジェクトは、1つのアイテムに関連するキーと値のペアを含めるために使用されます。例えば:{"name": "item1", "description":"a JSON object"}

もちろん、JSON配列とオブジェクトは相互にネストできます。これの一般的な例の1つは、クエリに一致するアイテムの配列とともにメタデータを含むJSONオブジェクトを返すAPIです。

{"startIndex": 0, "data": [{"name":"item 1"},{"name": "item2"} ]}

4
{"startIndex":0、[{"name": "item 1"}、{"name": "item2"}]}はjsonbjectでもjsonArrayでもありません。編集しました
Sarath Sadasivan Pillai

101

違いは、(ハッシュ)マップとリストと同じです。

JSONObject:

  • 名前付きの値(key-> valueのペア、タプルなど、呼び出したいもの)が含まれています
    • お気に入り {ID : 1}
  • 要素の順序は重要ではありません
    • のJSONObject {id: 1, name: 'B'}はに等しい{name: 'B', id: 1}です。

JSONArray:

  • シリーズ値のみが含まれます
    • お気に入り [1, 'value']
  • 値の順序は重要です
    • の配列は[1,'value']同じではありません['value',1]

JSON Object --> { "":""}

JSON Array --> [ , , , ]

{"employees":[
    {"firstName":"John", "lastName":"Doe"},
    {"firstName":"Anna", "lastName":"Smith"},
    {"firstName":"Peter", "lastName":"Jones"}
]}

4
これは、束の中で最も興味深い答えです
動的

24

プログラムで理解するのが最善。

構文が{}そのとき、これはJsonObject

構文が[]そのとき、これはJsonArray

JSONObjectの要素として表すことができるJSONのようなオブジェクトですJSONArrayJSONArray(または多くの)を含むことができますJSONObject

これがあなたに役立つことを願っています!


7

私は常にオブジェクトを使用していますが、より簡単に拡張できます。JSON配列はそうではありません。たとえば、もともとjson配列としてデータがあった場合、オブジェクトにデータをネストしない限り、ステータスヘッダーを追加する必要があります。唯一の欠点は、作成/解析の複雑さが少し増えることです。

だから代わりに

[datum0, datum1, datumN]

あなたが持っているだろう

{data: [datum0, datum1, datumN]}

その後、さらに追加することができます...

{status: "foo", data: [datum0, datum1, datumN]}

5

これをより簡単に理解するために、JSONオブジェクトとJSON配列の違いを以下に示します。

表形式の違いへのリンク:https : //i.stack.imgur.com/GIqI9.png

JSON配列

1. Arrays in JSON are used to organize a collection of related items
   (Which could be JSON objects)
2.  Array values must be of type string, number, object, array, boolean or null
3.  Syntax: 
           [ "Ford", "BMW", "Fiat" ]
4.  JSON arrays are surrounded by square brackets []. 
    **Tip to remember**  :  Here, order of element is important. That means you have 
    to go straight like the shape of the bracket i.e. straight lines. 
   (Note :It is just my logic to remember the shape of both.) 
5.  Order of elements is important. Example:  ["Ford","BMW","Fiat"] is not 
    equal to ["Fiat","BMW","Ford"]
6.  JSON can store nested Arrays that are passed as a value.

JSONオブジェクト

1.  JSON objects are written in key/value pairs.
2.  Keys must be strings, and values must be a valid JSON data type (string, number, 
    object, array, boolean or null).Keys and values are separated by a colon.
    Each key/value pair is separated by a comma.
3.  Syntax:
         { "name":"Somya", "age":25, "car":null }
4.  JSON objects are surrounded by curly braces {} 
    Tip to remember : Here, order of element is not important. That means you can go 
    the way you like. Therefore the shape of the braces i.e. wavy. 
    (Note : It is just my logic to remember the shape of both.)
5.  Order of elements is not important. 
    Example:  { rollno: 1, firstname: 'Somya'} 
                   is equal to 
             { firstname: 'Somya', rollno: 1}
6.  JSON can store nested objects in JSON format in addition to nested arrays.

JSON配列の#5の下では、その例は角括弧で囲まないでください。
マイクマクスウェル

その例は、単に概念を説明するためのものでした。ただし、理解を深めるために例を変更しました。@MikeMaxwellにお問い合わせいただきありがとうございます。あなたのような質問により、説明スキルが向上します。
SAM


0

私の知っているとおり、これまでのすべての回答はあなたの質問に洞察を与えています。私は、このSOスレッドを見つける1分前に、この混乱を好きすぎました。いくつかの回答を読んだ後、以下が得られます。JSONObjectは、JSON配列の要素として表すことができるJSONのようなオブジェクトです。言い換えると、JSONArrayには(または多くの)JSONObjectを含めることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.