Tôi mới đến Python. Tôi đã đưa ra vấn đề này trong khi gửi JSON Arraylist Obect từ Java đến Python.
[{'firstObject' : 'firstVal'}]
Nhưng khi tôi nhận được nó trong Python, tôi nhận được giá trị như
{'listName':{'firstObject':'firstVal'}}
Khi tôi vượt qua nhiều đối tượng trong mảng như thế này:
[{'firstObject' : 'firstVal'},{'secondObject' : 'secondVal'}]
Tôi đang nhận JSON từ Python End
{'listName':[{'firstObject':'firstVal'},{'secondObject' : 'secondVal'}]}
Tôi không thể hiểu tại sao điều này xảy ra. Bất cứ ai cũng giúp tôi một cách để biến trường hợp đầu tiên thành một đối tượng mảng hoặc một cách để tìm hiểu xem biến JSON có phải là loại mảng hay không.
Đây là về các đối tượng JSON so với mảng JSON.
Cho dù bạn sử dụng một đối tượng JSON hay mảng JSON là một vấn đề của hương vị.
Vì vậy, nếu bạn muốn biết sự khác biệt giữa đối tượng JSON và mảng JSON là gì, thì bài viết này là dành cho bạn.
Bắt đầu nào!
Sự khác biệt giữa JSON Object và JSON mảng là gì?
JSON [ký hiệu đối tượng JavaScript] là một định dạng để lưu trữ và trao đổi dữ liệu dưới dạng các khóa và giá trị. Ví dụ: khi truy xuất phản hồi từ yêu cầu HTTP.
Sự khác biệt giữa một đối tượng JSON và mảng JSON chỉ là vấn đề của hương vị. Nếu bạn có trách nhiệm phát triển, nó sẽ tùy thuộc vào bạn.
Sau đây, bạn sẽ tìm hiểu chính xác các đối tượng JSON và mảng JSON là gì và chúng khác nhau như thế nào với nhau được giải thích với Python.
Trong Python, làm việc với JSON được thực hiện tốt nhất bằng cách chuyển đổi chúng sang các đối tượng từ điển. & NBSP;
Định dạng bản ghi JSON rất ngắn gọn và không yêu cầu thông tin trùng lặp như XML.
Đối tượng JSON trong Python là gì?
Hãy để tạo ra một đối tượng JSON và từ điển trong Python:
{
"manufacturer": "Tesla Inc.",
"model": "Tesla S",
"engineType": "elecrical",
"horsePower": "362"
}
car = {
"manufacturer": "Tesla Inc.",
"model": "Tesla S",
"engineType": "elecrical",
"horsePower": "362"
}
Ở đây chúng ta thấy gần như chính xác cùng một kiểu dáng trên hai đối tượng.
Đầu tiên là một đối tượng JSON mô tả chiếc xe, và thứ hai là từ điển Python có cùng giá trị. & NBSP; describing the car, and the second is a Python dictionary with the same values.
Bạn có thể vượt qua các đối tượng JSON bằng văn bản thuần túy, tốt và xấu. & NBSP;
Ưu điểm là nó dễ đọc và phân tích, và nhược điểm là bảo mật. & NBSP;
Hủy bỏ là quá trình chuyển đổi JSON thành các đối tượng. & NBSP;
Đối với Python JSON Standard & NBSP; Thư viện, việc giải phóng hóa tạo ra một đầu ra từ điển. & NBSP;json standard library, deserialization generates a dictionary output.
Hãy để chuyển đổi một chuỗi JSON thành một từ điển:
>> import json
>> st_car = '{"manufacturer": "Tesla Inc.", "model": "Tesla S", "engineType": "elecrical", "horsePower": 362}'
>> js_car = json.loads[st_car]
>> print[js_car]
{'manufacturer': 'Tesla Inc.', 'model': 'Tesla S', 'engineType': 'elecrical', 'horsePower': 362}
Sau khi giải phóng, bạn có thể truy cập các trường JSON dưới dạng trường từ điển. & NBSP;
Ví dụ, ở đây, nhà sản xuất xe của bạn:
>> print[js_car["manufacturer"]]
Tesla Inc.
Ở đây, đối tượng JSON được tải từ một chuỗi, giống như phản hồi cho yêu cầu HTTP. & NBSP;
Bạn cũng có thể tải một đối tượng JSON từ một tệp bằng phương thức json.load.json.load.
Để lưu từ điển vào một đối tượng JSON, bạn cần thực hiện ngược lại của sự khử thuốc, được gọi là tuần tự hóa:
{'listName':{'firstObject':'firstVal'}}
0{'manufacturer': 'Tesla Inc.', 'model': 'Tesla S', 'engineType': 'elecrical', 'horsePower': 362}
Khi tuần tự hóa, bạn có thể chọn cách đối tượng sẽ hiển thị:
{'listName':{'firstObject':'firstVal'}}
2{'listName':{'firstObject':'firstVal'}}
3Định dạng khá đẹp này hoạt động tuyệt vời với các đối tượng JSON có nhiều làm tổ.
Bạn cũng có thể tuần tự hóa một đối tượng JSON vào một tệp bằng phương thức & nbsp; json.dump.json.dump.
Trong ví dụ, chúng tôi đã sử dụng các chuỗi và số nguyên làm giá trị trường. Nhưng JSON toàn diện hơn. & NBSP;
Bạn có thể sử dụng các loại dữ liệu này làm giá trị trường:
- Chuỗi: Được đặt trong các trích dẫn kép và có thể chứa các ký tự thoát, chẳng hạn như bảng, nguồn cấp dữ liệu và các ký tự Unicode.enclosed in double quotes, and may contain escape characters, such as tabulation, line feed, and Unicode characters.
- Số: bao gồm các số dấu phẩy động và số mũ. including floating-point and exponential numbers.
- Boolean: Đúng và sai. true and false.
- Không: Giá trị không có. the none value.
- Đối tượng JSON: Một đối tượng JSON khác. another JSON object.
- JSON Array: Một mảng JSON khác. another JSON array.
Các loại JSON được chuyển đổi thành các loại dữ liệu Python trong quá trình giải phóng hóa như sau:
Json | Python | |
sự vật | DIGN | |
mảng | danh sách | |
sợi dây | str | |
Số [Số nguyên] | int | |
số [thực] | trôi nổi | |
thật | ĐÚNG VẬY | |
sai | Sai | |
vô giá trị | Không có |
& nbsp; và ngược lại khi họ tuần tự hóa:
Python | Json |
DIGN | sự vật |
Danh sách, tuple | mảng |
str | sợi dây |
int, float | con số |
ĐÚNG VẬY | thật |
Sai | sai |
Không có | vô giá trị |
Một mảng json trong Python là gì?
Các mảng JSON được cấu trúc giống như các danh sách có khung Python. Chúng có thể có các loại dữ liệu giống như các giá trị trường đối tượng JSON, bao gồm các mảng lồng nhau. & NBSP;
Hãy để thêm một trường pin vào đối tượng JSON ở trên, giá trị của nó là một mảng JSON. & NBSP;
Trong mảng này, chúng tôi sẽ theo dõi các giá trị dung lượng pin Tesla,:
{'listName':{'firstObject':'firstVal'}}
4Khi giảm dần, mảng JSON trở thành một danh sách python. & Nbsp;
Bạn có thể tham khảo các yếu tố của danh sách này theo Index. & NBSP;
Mảng JSON ở đây đại diện cho giá trị của trường pin trong đối tượng JSON:
{'listName':{'firstObject':'firstVal'}}
5{'listName':{'firstObject':'firstVal'}}
6Bạn cũng có thể vượt qua một mảng JSON ở mức cao nhất của tệp hoặc chuỗi JSON. Hãy để thêm một chiếc xe khác và xem những gì xảy ra:
{'listName':{'firstObject':'firstVal'}}
7{'manufacturer': 'Tesla Inc.', 'model': 'Tesla S', 'engineType': 'elecrical', 'horsePower': 362}
Trong trường hợp này, bạn có một mảng JSON chứa hai đối tượng JSON.
Bạn chỉ có thể tham khảo một đối tượng cụ thể trong mảng JSON bằng chỉ mục của nó.
Bạn có thể nhận được cùng một cấu trúc dữ liệu mà không cần sử dụng mảng JSON, chỉ sử dụng các đối tượng JSON lồng nhau. Xem ở đây:
{'listName':{'firstObject':'firstVal'}}
9[{'firstObject' : 'firstVal'},{'secondObject' : 'secondVal'}]
0Có một đối tượng JSON với các đối tượng JSON bên trong. Các đối tượng JSON chứa hai trường với tên xe hơi và các giá trị là các đối tượng JSON tương ứng. & NBSP;
Nếu trình bao bọc là một đối tượng JSON thay vì một mảng, thì bạn có thể tham khảo các đối tượng lồng nhau bằng tên của chúng, chứ không phải bằng các chỉ mục số của chúng.
Đối tượng JSON so với mảng JSON: Sự khác biệt là gì?
Việc sử dụng phương pháp này hay phương pháp khác để chuyển nhiều đối tượng trong JSON tùy thuộc vào bất cứ điều gì bạn đang làm việc. Nó chỉ là một vấn đề của hương vị. & Nbsp;
Nếu tất cả tùy thuộc vào bạn, bạn có thể chọn theo cách bạn muốn. Sử dụng các đối tượng JSON lồng nhau và tham khảo các trường của chúng bằng tên trường hoặc sử dụng các mảng JSON và tham khảo các yếu tố của chúng theo chỉ mục.
Điều đáng chú ý là khi bạn giải mã một đối tượng JSON có cấu trúc bị hỏng, bạn sẽ nhận được một JSondecodeError. & NBSP;JSONDecodeError.
Ví dụ: nếu bạn quên chỉ định tên của nhà sản xuất trường cho một trong các yếu tố mảng JSON:
[{'firstObject' : 'firstVal'},{'secondObject' : 'secondVal'}]
1[{'firstObject' : 'firstVal'},{'secondObject' : 'secondVal'}]
2Hoặc nếu bạn đặt một số thay vì một chuỗi trong một tên trường:
[{'firstObject' : 'firstVal'},{'secondObject' : 'secondVal'}]
3[{'firstObject' : 'firstVal'},{'secondObject' : 'secondVal'}]
4Ngoài ra, nếu bạn cố gắng tạo một mảng được lồng trong đối tượng JSON mà không cần chỉ định tên trường:
[{'firstObject' : 'firstVal'},{'secondObject' : 'secondVal'}]
5[{'firstObject' : 'firstVal'},{'secondObject' : 'secondVal'}]
6Hãy chắc chắn rằng bạn theo cấu trúc JSON trong các chương trình của bạn.