Python: chuyển đổi danh sách từ điển sang json


82

Tôi có một danh sách các từ điển, giống như sau:

list = [{'id': 123, 'data': 'qwerty', 'indices': [1,10]}, {'id': 345, 'data': 'mnbvc', 'indices': [2,11]}]

và như thế. Có thể có nhiều tài liệu hơn trong danh sách. Tôi cần chuyển đổi những tài liệu này thành một tài liệu JSON, tài liệu này có thể được trả lại qua chai và tôi không thể hiểu cách thực hiện việc này. Xin vui lòng giúp đỡ. Tôi đã thấy các câu hỏi tương tự trên trang web này, nhưng tôi không thể hiểu các giải pháp ở đó.

Câu trả lời:


118

sử dụng thư viện json

import json
json.dumps(list)

Nhân tiện, bạn có thể xem xét việc thay đổi danh sách biến thành một tên khác, listlà chức năng nội trang để tạo danh sách, bạn có thể nhận được một số hành vi không mong muốn hoặc một số mã lỗi nếu bạn không thay đổi tên biến.


1
Được chứ. Đây chỉ là một mẫu và tôi đang sử dụng tên mylist cho việc này. Dumps () có hoạt động cho cả danh sách không? Tôi nghĩ rằng nó chỉ được sử dụng cho các trường phái.
Apoorv Ashutosh

Có thể lưu tệp dưới dạng Mảng cột JSON hoặc Mảng hàng JSON không?
Anoop Toffy

LƯU Ý: danh sách gán lại (list = [1,2,3]) xung đột với danh sách phương thức nội trang (). xin vui lòng ghi nhớ.
nikhil swami

25
import json

list = [{'id': 123, 'data': 'qwerty', 'indices': [1,10]}, {'id': 345, 'data': 'mnbvc', 'indices': [2,11]}]

Ghi vào tệp json:

with open('/home/ubuntu/test.json', 'w') as fout:
    json.dump(list , fout)

Đọc tệp Json:

with open(r"/home/ubuntu/test.json", "r") as read_file:
    data = json.load(read_file)
print(data)
#list = [{'id': 123, 'data': 'qwerty', 'indices': [1,10]}, {'id': 345, 'data': 'mnbvc', 'indices': [2,11]}]

LƯU Ý: danh sách gán lại (list = [1,2,3]) xung đột với danh sách phương thức nội trang (). xin vui lòng ghi nhớ.
nikhil swami

1
response_json = ("{ \"response_json\":" + str(list_of_dict)+ "}").replace("\'","\"")
response_json = json.dumps(response_json)
response_json = json.loads(response_json)

2
Chào! Mặc dù điều này có thể giải quyết vấn đề của OP, nhưng nói chung không khuyến khích chỉ viết câu trả lời mã trên SO. Vui lòng cung cấp một số giải thích tại sao đây là một giải pháp cho vấn đề vì nó sẽ giúp OP hiểu rõ hơn và sẽ mang lại lợi ích cho những người truy cập trang web trong tương lai. Cảm ơn!
d_kennetz

0

Để chuyển đổi nó thành một từ điển duy nhất với một số giá trị khóa quyết định, bạn có thể sử dụng mã bên dưới.

data = ListOfDict.copy()
PrecedingText = "Obs_"
ListOfDictAsDict = {}
for i in range(len(data)):
    ListOfDictAsDict[PrecedingText + str(i)] = data[i]
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.