2009-03-10 5 views
5

私は、Python Libraryを使用してGoogleデータソースを実装しています。GoogleデータソースJSONが無効ですか?

{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}]}]} 

私はのsimplejsonを微調整するにはどうすればよい:私も彼らのexampleがJSONLintに検証しません、ライブラリーからの応答がしかしsimplejson library.

を使用して別のPythonスクリプトにインポートすることができるようにしたいと思います上記のJSONをインポートするための '読み込み'機能?主な問題は、オブジェクトキーが文字列ではないということです。

キーを文字列に変換するための正規表現を書こうとしないのは、そのようなコードが維持するのが面倒だと思うからです。

上記のjsonをsimplejsonでPythonにインポートしようとすると、現在「Expecting property name:line 1 column 1(char 1)」エラーが表示されています。

答えて

8

文字列キーのない無効なJSONと見なされます。

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

でなければなりません:

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

Google Data Sourceページによると、彼らは無効なJSONを返しています。彼らは具体的にそれを言っているわけではありませんが、すべての例ではキーの引用符がありません。

JSON processors for Pythonの完全なリストは、どのフォーマットがサポートされているか、どれだけうまくいくかについて詳しく説明しています。ほとんどの場合、文字列以外のキーであるはサポートされていませんが、demjsonに変換されているようです。

easy_install demjson 
+1

JSONが期待キーとして文字列ではなく、Pythonの辞書、例えば、{1:1、2:4}有効なPython辞書であるが、それは無効JSONです。 '{id:1}'と '{" id ":1}'は有効なJavascriptです。 – jfs

+0

明確にするために、私はこの例が有効なPython辞書ではないことを意味しました。インデックス番号は合法ですが、任意の名前は文字列でなければなりません。 {id:1}は有効なJavascriptですが、無効なPythonです。 – Soviut

関連する問題