Bạn ở đây vì khi bạn giải mã dữ liệu JSON và dữ liệu JSON dự kiến là loại dict
, nhưng nó xuất hiện dưới dạng
serialize into JSON and write into a file Done Writing into a file Started Reading JSON data from file Type of deserialized data:0
Đọc thêm
- Giải Bài tập JSON của Python để thực hành các kỹ năng JSON của Python
Nói cách khác, Bạn muốn phân tích cú pháp tệp JSON và chuyển đổi dữ liệu JSON thành từ điển để bạn có thể truy cập JSON bằng các cặp khóa-giá trị của nó, nhưng khi bạn phân tích cú pháp dữ liệu JSON, bạn nhận được một danh sách chứ không phải từ điển. Trong bài viết này, chúng ta sẽ xem cách truy cập dữ liệu trong những tình huống như vậy. Trước đó, trước tiên hãy hiểu tại sao điều này lại xảy ra
- Nó có thể xảy ra vì JSON của bạn là một mảng có một đối tượng bên trong, chẳng hạn như ai đó đã tuần tự hóa danh sách Python thành JSON. Vì vậy, khi bạn phân tích nó, bạn sẽ nhận được một đối tượng danh sách. Trong trường hợp này, bạn cần lặp lại danh sách để truy cập dữ liệu
- Ngoài ra, nếu ai đó đã tuần tự hóa danh sách Python [chứa từ điển] thành JSON. Khi bạn phân tích cú pháp, bạn sẽ nhận được một danh sách có từ điển bên trong. Chúng ta sẽ xem cách truy cập dữ liệu đó
Chúng ta sẽ xem cả hai ví dụ. nhưng trước tiên, hãy hiểu kịch bản bằng một ví dụ
import json
sampleList = [125, 23, 85, 445]
# Serialization
print["serialize into JSON and write into a file"]
with open["sampleFile.json", "w"] as write_file:
json.dump[sampleList, write_file]
print["Done Writing into a file"]
# Deserialization
print["Started Reading JSON data from file"]
with open["sampleFile.json", "r"] as read_file:
data = json.load[read_file]
print["Type of deserialized data: ", type[data]]
đầu ra
serialize into JSON and write into a file Done Writing into a file Started Reading JSON data from file Type of deserialized data:
Như bạn có thể thấy, chúng tôi đã nhận được một danh sách từ json. load[] vì chúng tôi chỉ tuần tự hóa đối tượng loại danh sách. Bây giờ chúng ta có thể truy cập dữ liệu bằng cách lặp lại nó như thế này. chỉ cần thêm các dòng sau vào cuối ví dụ trên và thực hiện nó
print["Data is"]
for i in data:
print[i]
đầu ra
Data is 125 23 85 445
Deserialize một mảng JSON có chứa một từ điển bên trong
Bây giờ, hãy xem kịch bản thứ hai. Giả sử ai đó đã tuần tự hóa danh sách Python [chứa từ điển] thành JSON. tôi. e. , Danh sách chứa một từ điển bên trong
Trong ví dụ này, tôi đang tuần tự hóa MarksList sau thành JSON
StudentDict = {"id": 22, "name": "Emma"}
MarksList = [StudentDict, 78, 56, 85, 67]
Bạn có thể truy cập trực tiếp vào từ điển thực tế bằng cách truy cập các mục thứ 0 từ danh sách. Bây giờ hãy xem ví dụ
Khi bạn chuyển đổi từ Python sang JSON, các đối tượng Python được chuyển đổi thành JSON [JavaScript] tương đương
PythonJSONdictObjectlistArraytupleArraystrStringintNumberfloatNumberTruetrueFalsefalseNonenullThí dụ
Chuyển đổi một đối tượng Python chứa tất cả các loại dữ liệu hợp lệ
nhập json
x = {
"tên". "John",
"tuổi". 30,
"đã kết hôn". Đúng,
"đã ly hôn". Sai,
"con". ["Ann","Billy"],
"thú cưng". Không,
"ô tô". [
{"model". "BMW 230", "mpg". 27. 5},
{"model". "Ford Edge", "mpg". 24. 1}
]
}
in [json. bãi [x]]
Tự mình thử »Định dạng kết quả
Ví dụ trên in ra một chuỗi JSON, nhưng nó không dễ đọc lắm, không có dấu đầu dòng và ngắt dòng
Phương thức
serialize into JSON and write into a file Done Writing into a file Started Reading JSON data from file Type of deserialized data:1 có các tham số để dễ đọc kết quả hơn
Bạn cũng có thể xác định dấu phân cách, giá trị mặc định là [", ", ". "], có nghĩa là sử dụng dấu phẩy và dấu cách để phân tách từng đối tượng, dấu hai chấm và dấu cách để phân tách khóa khỏi giá trị
Trong bài viết này, chúng ta sẽ tìm hiểu cách chuyển đổi chuỗi JSON thành từ điển trong Python. Chúng tôi sẽ sử dụng chức năng tích hợp có sẵn trong Python cho JSON và một số ví dụ tùy chỉnh có liên quan. Trước tiên, hãy xem nhanh dạng đầy đủ của JSON và cách các tệp JSON được sử dụng
JSON là gì?
JSON là viết tắt của
serialize into JSON and write into a file Done Writing into a file Started Reading JSON data from file Type of deserialized data:2. Nó là một định dạng dữ liệu phổ biến được sử dụng để biểu diễn dữ liệu có cấu trúc. Nó là một định dạng nhẹ được sử dụng để trao đổi dữ liệu. Biểu diễn dữ liệu trong JSON tương tự như biểu diễn của Từ điển Python. Nó là một tập hợp các cặp tên/giá trị. Trong JSON, việc truyền và nhận dữ liệu giữa máy chủ và ứng dụng web ở định dạng JSON là phổ biến. Nó cũng phổ biến để lưu trữ một đối tượng JSON trong một tệp. Dữ liệu JSON có thể ở dạng đối tượng, mảng, giá trị, chuỗi hoặc số. Trong Python, JSON tồn tại dưới dạng một chuỗi hoặc giống như một từ điển có các cặp khóa-giá trị trong đó các khóa phải là một chuỗi và các giá trị có thể thuộc bất kỳ loại nào như đối tượng, mảng, giá trị, chuỗi hoặc số
Chuyển đổi Chuỗi JSON thành Từ điển Python bằng json. hàm tải []
Python cung cấp phương thức
serialize into JSON and write into a file Done Writing into a file Started Reading JSON data from file Type of deserialized data:3 để chuyển đổi nội dung tệp JSON thành Từ điển Python. Chuyển đổi tệp JSON thành từ điển là một nhiệm vụ khá dễ dàng trong python vì tập lệnh python cung cấp mô-đun JSON tích hợp và JSON có hàm load[] tích hợp để thực hiện quá trình chuyển đổi. Sử dụng cùng một chức năng JSON, chúng ta cũng có thể chuyển đổi một chuỗi JSON do người dùng nhập làm từ điển. Cách này dùng khi lập trình viên đã có sẵn file JSON với dữ liệu có cấu trúc
cú pháp
json.load[file object]
Tệp JSON mẫu
Tệp JSON này, chúng tôi sẽ chuyển đổi thành Từ điển Python
{
"Science" : [
{
"name" : "Flora"
"age" : 18
"marks": 87
},
{
"name" : "Frank"
"age" : 18
"marks": 76
}
],
"Commerce" : [
{
"name" : "David"
"age" : 18
"marks": 92
},
{
"name" : "Denver"
"age" : 19
"marks": 65
}
]
}
Thí dụ
Trong ví dụ sau, chúng ta sẽ đọc một tệp JSON và sau đó in ra dữ liệu dưới dạng từ điển. Hàm
serialize into JSON and write into a file Done Writing into a file Started Reading JSON data from file Type of deserialized data:3 này đọc chuỗi từ tệp JSON. json. hàm load[file] tạo và trả về một từ điển Python mới với các cặp khóa-giá trị trong tệp JSON. Sau đó, từ điển này được gán cho biến dữ liệu và kết quả được hiển thị. Bạn cũng có thể kiểm tra kiểu của biến bằng cách sử dụng hàm
serialize into JSON and write into a file Done Writing into a file Started Reading JSON data from file Type of deserialized data:5 có sẵn của Python
import json
#opens the JSON file
with open["sample.json"] as json_file:
data = json.load[json_file]
#type of data variable
print["Type:", type[data]]
#prints the data in dictionary
print["Science Students:", data['Science']]
print["Commerce Students:", data['Commerce']]
Loại.
Sinh viên khoa học. [{'Tên'. 'Hệ thực vật', 'tuổi tác'. 18, 'điểm'. 87}, {'tên'. 'Frank', 'tuổi tác'. 18, 'điểm'. 76}]
Sinh viên Thương mại. [{'Tên'. 'David', 'tuổi'. 18, 'điểm'. 92}, {'tên'. 'Denver', 'tuổi tác'. 19, 'điểm'. 65}]
Vì chúng ta đã đọc tệp JSON, đã chuyển đổi chuỗi JSON thành Từ điển Python, giờ đây chúng ta có thể truy cập dữ liệu bằng chỉ mục như hình bên dưới. Đây là cách chúng ta có thể in dữ liệu lồng nhau
________số 8
{'Tên'. 'Hệ thực vật', 'tuổi tác'. 18, 'điểm'. 87}
Những điểm cần nhớ
1. Để đọc bất kỳ tệp JSON nào và để làm việc với JSON [chuỗi hoặc tệp chứa đối tượng JSON], bạn phải nhập mô-đun JSON trong tập lệnh python
2. Tệp JSON của bạn và tập lệnh Python của bạn phải nằm trong cùng một thư mục
3. Tệp JSON của bạn phải tuân theo tiêu chuẩn JSON, vì vậy nó phải có dấu ngoặc kép thay vì dấu ngoặc đơn, nếu không nó sẽ trả về JSONDecodeError
Sự kết luận
Trong đoạn mã trên, chúng ta học cách đọc một chuỗi JSON và chuyển đổi dữ liệu sang Từ điển Python. Bây giờ, chúng ta có thể truy cập dữ liệu bằng cách sử dụng các chỉ mục như chúng ta làm trong Từ điển Python