5

我正在使用他们的Python 库实现一个 Google 数据源。我希望库的响应能够使用simplejson 库导入另一个 Python 脚本。

但是,即使是他们的示例也无法在 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}]}]}

如何调整 simplejson 'loads' 函数以导入上述 JSON 内容?我认为主要问题是对象键不是字符串。

我宁愿不编写正则表达式来将键转换为字符串,因为我认为这样的代码维护起来很烦人。

尝试使用 simplejson 将上述 JSON 导入 Python 时,我目前收到“期望属性名称:第 1 行第 1 列(字符 1)”错误。

4

1 回答 1

8

它被认为是没有字符串键的无效 JSON。

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

一定是:

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

根据谷歌数据源页面,他们返回无效的 JSON。他们没有具体说出来,但他们所有的例子都没有在键上引用。

这是一个相当完整的Python JSON 处理器列表,其中详细介绍了它们支持的格式以及性能如何。大多数不支持非字符串键,但似乎demjson会转换它。

easy_install demjson
于 2009-03-10T01:35:25.357 回答