2009-03-10 36 views
5

Tôi đang triển khai Nguồn dữ liệu của Google bằng cách sử dụng Python Library của họ. Tôi muốn câu trả lời từ thư viện để có thể được nhập khẩu trong một kịch bản Python sử dụng simplejson library.JSON nguồn dữ liệu của Google không hợp lệ?

Tuy nhiên, thậm chí họ example không xác nhận trong JSONLint:

{cols: 
    [{id:'name',label:'Name',type:'string'}, 
    {id:'salary',label:'Salary',type:'number'}, 
    {id:'full_time',label:'Full Time Employee',type:'boolean'}], 
rows: 
    [{c:[{v:'Jim'},{v:800,f:'$800'},{v:false}]}, 
    {c:[{v:'Bob'},{v:7000,f:'$7,000'},{v:true}]}, 
    {c:[{v:'Mike'},{v:10000,f:'$10,000'},{v:true}]}, 
    {c:[{v:'Alice'},{v:12500,f:'$12,500'},{v:true}]}]} 

Làm thế nào để tinh chỉnh các simplejson chức năng 'tải' để nhập JSON ở trên? Tôi nghĩ rằng vấn đề chính là các khóa đối tượng không phải là chuỗi.

Tôi không muốn viết regex để chuyển đổi khóa thành chuỗi vì tôi cho rằng mã như vậy sẽ gây khó chịu để duy trì.

Tôi hiện đang nhận được lỗi "Tên thuộc tính mong đợi: dòng 1 cột 1 (char 1)" khi cố nhập json ở trên vào python với simplejson.

Trả lời

8

Nó được coi là JSON không hợp lệ mà không có các phím chuỗi.

{id:'name',label:'Name',type:'string'} 

phải:

{'id':'name','label':'Name','type':'string'} 

Theo trang Google Data Source, họ đang trở về JSON không hợp lệ. Họ không cụ thể nói điều đó, nhưng tất cả các ví dụ của họ thiếu dấu ngoặc kép trên các phím.

Dưới đây là danh sách khá đầy đủ của JSON processors for Python, thông tin chi tiết về định dạng nào chúng hỗ trợ và mức độ tốt. Hầu hết không hỗ trợ khóa không phải là chuỗi, nhưng dường như demjson sẽ chuyển đổi khóa đó.

easy_install demjson 
+1

JSON hy vọng chuỗi như là chìa khóa, không trăn từ điển ví dụ: {1: 1, 2: 4} là một cuốn từ điển python hợp lệ nhưng nó là một JSON không hợp lệ. '{id: 1}' và '{" id ": 1}' là một Javascript hợp lệ. – jfs

+0

Để rõ ràng, tôi có nghĩa là ví dụ được hiển thị không phải là từ điển python hợp lệ. Số chỉ mục là hợp pháp, nhưng bất kỳ tên nào phải là chuỗi. {id: 1} là Javascript hợp lệ nhưng không hợp lệ Python. – Soviut

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