0

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

ここで何が問題なのか誰か教えてもらえますか?

4

3 に答える 3

4

あなたがやっているsimplejson.loads(str(trans_text))

trans_text文字列 (str または unicode) またはバッファ オブジェクトではありません。これは、simplejsonエラー メッセージと次のレポートで確認できますrepr(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']
于 2011-04-14T07:14:45.413 に答える
4

問題は、simplejson が単一引用符でエンコードされた文字列ではなく、二重引用符でエンコードされた文字列を含む json をサポートすることです。

json.loads(jsonstring.replace("'", '"'))
于 2011-04-12T07:02:53.277 に答える
2

JSON 構文は、JavaScript の完全な構文をサポートしていません。JavaScript とは異なり、JSON 文字列と属性名は二重引用符で囲む必要があります。

文字列::= ""| " 文字 "

于 2011-04-12T07:07:49.460 に答える