我正在尝试使用Python中的simplejson解析Google翻译结果。但我得到以下例外。
Traceback (most recent call last):
File "Translator.py", line 45, in <module>
main()
File "Translator.py", line 41, in main
parse_json(trans_text)
File "Translator.py", line 29, in parse_json
json = simplejson.loads(str(trans_text))
File "/usr/local/lib/python2.6/dist-packages/simplejson-2.1.3-py2.6-linux-i686.egg/simplejson/__init__.py", line 385, in loads
return _default_decoder.decode(s)
File "/usr/local/lib/python2.6/dist-packages/simplejson-2.1.3-py2.6-linux-i686.egg/simplejson/decoder.py", line 402, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/local/lib/python2.6/dist-packages/simplejson-2.1.3-py2.6-linux-i686.egg/simplejson/decoder.py", line 418, in raw_decode
obj, end = self.scan_once(s, idx)
simplejson.decoder.JSONDecodeError: Expecting property name: line 1 column 1 (char 1)
这是我的json对象看起来像
{'translations': [{'translatedText': 'fleur'}, {'translatedText': 'voiture'}]}
有谁能告诉我这里有什么问题?
答案 0 :(得分:4)
问题是simplejson支持带有双引号编码字符串的json,而不是单引号编码字符串,所以一个天真的解决方案可能
json.loads(jsonstring.replace("'", '"'))
答案 1 :(得分:4)
你正在做simplejson.loads(str(trans_text))
trans_text
是 NOT 字符串(str或unicode)或缓冲区对象。 simplejson
错误消息以及repr(trans_text)
的报告
这是我对trans text的回复
{'translations': [{'translatedText': 'hola'}]}
trans_text
是字典。
如果要将其转换为JSON字符串,则需要使用simplejson.dumps()
,而不是simplejson.loads()
。
如果您想将结果用于其他内容,您只需要挖出数据,例如
# Your other example
trans_text = {'translations': [{'translatedText': 'fleur'}, {'translatedText': 'voiture'}]}
for x in trans_text['translations']:
print "chunk of translated text:", x['translatedText']
答案 2 :(得分:2)
JSON语法不支持JavaScript的完整语法。与JavaScript不同,JSON字符串和属性名称必须加双引号。
string :: =
""
|"
字符"