Sự khác biệt giữa JSONObject và JSONArray


99

Sau khi xem qua Google, tôi đã tìm thấy liên kết này mô tả sự khác biệt, nhưng theo quan điểm cú pháp.

Khi nào thì cái này được ưu tiên hơn cái kia trong kịch bản lập trình?

Câu trả lời:


186

Khi bạn đang làm việc với dữ liệu JSON trong Android, bạn sẽ sử dụng JSONArrayđể phân tích cú pháp JSON bắt đầu bằng dấu ngoặc mảng. Mảng trong JSON được sử dụng để tổ chức một tập hợp các mục có liên quan (Có thể là các đối tượng JSON).
Ví dụ:[{"name":"item 1"},{"name": "item2} ]

Mặt khác, bạn sẽ sử dụng JSONObjectkhi xử lý JSON bắt đầu bằng dấu ngoặc nhọn. Đối tượng JSON thường được sử dụng để chứa các cặp khóa / giá trị liên quan đến một mục. Ví dụ:{"name": "item1", "description":"a JSON object"}

Tất nhiên, các mảng và đối tượng JSON có thể được lồng vào nhau. Một ví dụ phổ biến về điều này là một API trả về một đối tượng JSON chứa một số siêu dữ liệu cùng với một mảng các mục phù hợp với truy vấn của bạn:

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

4
{ "startIndex": 0, [{ "tên": "mục 1"}, { "tên": "ITEM2"}]} không phải là một jsonbject hay một jsonArray tôi đã chỉnh sửa nó
Sarath Sadasivan Pillai

101

Sự khác biệt giống như (Hash) Bản đồ và Danh sách.

JSONObject:

  • Chứa các giá trị được đặt tên (cặp khóa-> giá trị, bộ giá trị hoặc bất cứ thứ gì bạn muốn gọi chúng)
    • giống {ID : 1}
  • Thứ tự của các phần tử không quan trọng
    • một JSONObject của {id: 1, name: 'B'}bằng {name: 'B', id: 1}.

JSONArray:

  • Chỉ chứa giá trị chuỗi
    • giống [1, 'value']
  • Thứ tự các giá trị là quan trọng
    • mảng của [1,'value']không giống như['value',1]

Thí dụ

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

JSON Array --> [ , , , ]

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

4
đây là câu trả lời thú vị nhất trong nhóm
năng động

24

Hiểu theo chương trình tốt nhất.

khi cú pháp là {}thì đây làJsonObject

khi cú pháp là []thì đây làJsonArray

A JSONObjectlà một đối tượng giống JSON có thể được biểu diễn như một phần tử trong JSONArray. JSONArraycó thể chứa một (hoặc nhiều)JSONObject

Hy vọng điều này sẽ hữu ích cho bạn!


7

Tôi luôn sử dụng đối tượng, nó dễ dàng mở rộng hơn, mảng JSON thì không. Ví dụ, ban đầu bạn có một số dữ liệu dưới dạng mảng json, sau đó bạn cần thêm tiêu đề trạng thái vào đó, bạn sẽ gặp một chút khó khăn, trừ khi bạn lồng dữ liệu vào một đối tượng. Nhược điểm duy nhất là độ phức tạp của việc tạo / phân tích cú pháp tăng nhẹ.

Vì vậy, thay vì

[datum0, datum1, datumN]

Bạn sẽ có

{data: [datum0, datum1, datumN]}

sau đó bạn có thể bổ sung thêm ...

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

5

Để hiểu nó một cách dễ dàng hơn, sau đây là những điểm khác biệt giữa đối tượng JSON và mảng JSON:

Liên kết đến Sự khác biệt bảng: https://i.stack.imgur.com/GIqI9.png

Mảng 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.

Đối tượng 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.

Dưới # 5 trong mảng JSON, ví dụ đó không nên nằm trong dấu ngoặc vuông?
Mike Maxwell

Ví dụ đó chỉ để giải thích khái niệm. Mặc dù tôi đã thay đổi ví dụ để hiểu rõ hơn. Cảm ơn bạn đã hỏi @MikeMaxwell, những câu hỏi như của bạn sẽ cải thiện kỹ năng giải thích của chúng tôi.
SAM

1

Khi một JSON bắt đầu bằng {} thì nó là một đối tượng Object JSON và khi nó bắt đầu bằng [] thì nó là một Array JOSN Array

Một mảng JSON có thể bao gồm một / nhiều đối tượng và đó được gọi là một mảng các đối tượng


0

Tôi biết, tất cả các câu trả lời trước đây đều thấu hiểu câu hỏi của bạn. Tôi đã quá giống bạn sự nhầm lẫn này chỉ một phút trước khi tìm thấy chủ đề SO này. Sau khi đọc một số câu trả lời, đây là những gì tôi nhận được: JSONObject là một đối tượng giống JSON có thể được biểu diễn dưới dạng một phần tử trong mảng, JSONArray. Nói cách khác, một JSONArray có thể chứa một (hoặc nhiều) JSONObject.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.