2011-01-15 4 views
7

Я новичок в Python и JSON, поэтому, извините, если я не знаю, что сказать. Я получаю следующий результат от Google Translate API и хотите разобрать значение «translatedText»:Получите значение конкретного элемента JSON в Python

{ 
"data": { 
    "translations": [ 
    { 
    "translatedText": "Toute votre base sont appartiennent à nous" 
    } 
    ] 
} 
} 

Этот ответ просто хранится в виде строки с помощью этого:

response = urllib2.urlopen(translateUrl) 
translateResponse = response.read() 

Так да, все, что я хочу сделать, это получить переведенный текст и сохранить его в переменной. Я искал Документы Python, но это кажется настолько запутанным и не похоже, что JSON хранится как простая строка, а не какой-то супер классный JSON-объект.

+3

В интересах улучшения документации: Вы найти 'json' модуль в документации? Вы нашли раздел «Основное использование»? Что было в описании «дампов» и «нагрузок», которые дали вам впечатление, что документы не «похоже, считают JSON сохраненным как простую строку, а не какой-то супер классный JSON-объект»? Было бы более полезно, если бы примеры были включены в каждое определение функции, а не в одну большую группу вперед? –

+1

Ну, я новичок в документах Python в целом, поэтому мне непонятно, как все описано. В документах PHP/Java функции кажутся очень четко организованными и определенными, но это, вероятно, именно то, к чему я привык. Также да, я думаю, было бы лучше, если бы примеры были даны с функциями, а не с самого начала, потому что не ясно, что они на самом деле делают, пока вы не читаете вперед. Теперь я вижу, что делает функция загрузки, но когда я ее просматривал раньше, похоже, что она использовалась в специальном формате, а не в форматированной строке JSON. – Matt

ответ

12

Вы можете разобрать текст в объект, используя json модуль в Python> = 2.6:

>>> import json 
>>> translation = json.loads("""{ 
... "data": { 
... "translations": [ 
... { 
...  "translatedText": "Toute votre base sont appartiennent nous" 
... }, 
... { 
...  "translate": "¡Qué bien!" 
... } 
... ] 
... } 
... } 
... """) 
>>> translation 
{u'data': {u'translations': [{u'translatedText': u'Toute votre base sont appartiennent nous'}]}} 
>>> translation[u'data'][u'translations'][0][u'translatedText'] 
u'Toute votre base sont appartiennent nous' 
>>> translation[u'data'][u'translations'][1][u'translate'] 
u'¡Qué bien!' 
+0

Если у вас есть python <= 2.6, вы можете использовать пакет simplejson. Это то же самое, что и json, но не в стандартной библиотеке python. – ikostia

+0

ваш ответ был именно тем, что я искал .. спасибо – akki

+0

и да, пожалуйста, рассмотрите изменения, которые я предложил ... они уяснили некоторые сомнения, которые я все еще имел после прочтения вашего ответа – akki