2013-11-15 38 views
5

Tôi có dữ liệu JSON dưới dạng một loạt các từ điển có sẵn dưới dạng tải trọng yêu cầu.Cách phân tích cú pháp json bằng ijson và python

[ 
    { "Field1": 1, "Feld2": "5" }, 
    { "Field1": 3, "Feld2": "6" } 
] 

Tôi đã cố gắng ijson.items(f, '') sản lượng toàn bộ đối tượng JSON dưới dạng một mục duy nhất. Có cách nào tôi có thể lặp lại các mục bên trong mảng từng cái một bằng cách sử dụng ijson?

Đây là mã mẫu mà tôi đã thử, cho năng suất JSON dưới dạng một đối tượng duy nhất.

f = open("metadatam1.json") 
objs = ijson.items(f, '') 
for o in objs: 
    print str(o) + "\n" 

[{'Feld2': u'5', 'Field1': 1}, {'Feld2': u'6', 'Field1': 3}] 
+1

Vui lòng thêm mã của bạn, thể hiện cách "tạo toàn bộ json thành một mục duy nhất" – shx2

Trả lời

19

Tôi không phải là rất quen thuộc với ijson, nhưng đọc một số mã của nó có vẻ như gọi items với một tiền tố của "item" nên làm việc để có được những mặt hàng của mảng, chứ không phải là đối tượng cấp cao nhất:

for item in ijson.items(f, "item"): 
    # do stuff with the item dict 
+0

Cảm ơn bạn đã làm việc! – Overture

+0

Điều này chỉ trích ra các lỗi sau: '' 'TypeError: không thể concat byte để str''' – Jeremy

+0

@JeremyCraigMartinez: Không có cách nào tôi có thể đoán nơi mà ngoại lệ là đến từ chỉ với các văn bản ngoại lệ. Tôi đề nghị đặt một câu hỏi của riêng bạn, và bao gồm cả mã của bạn và một traceback đầy đủ. – Blckknght

Các vấn đề liên quan