Python JSON谷歌翻译解析与Simplejson问题

时间:2011-04-12 06:38:04

标签: python simplejson

我正在尝试使用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'}]}

有谁能告诉我这里有什么问题?

3 个答案:

答案 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 :: = "" | " 字符 "