2012-02-01 5 views
7

Поэтому у меня есть код Python которым возвращает строку JSON, как этот:Как напечатать конкретное значение JSON в Python?

'{"X": "value1", "Y": "value2", "Z": [{"A": "value3", "B": "value4"}]}' 

То, что я хочу сделать, это распечатать и/или возврата (в Python) "value 3" для того, чтобы использовать его. Также назначьте его переменной, чтобы я мог работать с ней позже.

Как я могу это сделать?

+0

Извините, за ошибку по коду !! Thnx! – Jmlevick

+0

ПРИМЕЧАНИЕ. Я использую модуль «simplejson» для анализа данных. – Jmlevick

+0

. Ваш вход по-прежнему недействителен JSON. 'value1' и' value4' должны быть внутри кавычек. Даже 'simplejson' не может декодировать ваш вход. –

ответ

12
>>> import json 
>>> a = json.loads('{"X":"value1","Y":"value2","Z":[{"A":"value3","B":"value4"}]}') 
>>> a 
{'Y': 'value2', 'X': 'value1', 'Z': [{'A': 'value3', 'B': 'value4'}]} 
>>> a["Z"][0]["A"] 
'value3' 
+0

О! две вещи: я использую модуль «simplejson» для анализа данных, а моя строка похожа на недавно отредактированный в моем вопросе ... Используется ли ваш ответ? потому что я использую simplejson.loads (datavariable) – Jmlevick

+0

Спасибо! Это безупречно работало над тем, чего я пытался достичь! – Jmlevick

+0

Любой учебник, который я могу прочитать, чтобы лучше узнать некоторые значения из строк JSON в Python? – Jmlevick

3

Хорошо, я полагаю, ваш JSON выглядит следующим образом (обратите внимание на " вокруг каждого value):

{"X":"value1", "Y":"value2", "Z":[{"A":"value3", "B":"value4"}]} 

Тогда вы можете сделать это:

import json 
j = '{"X":"value1", "Y":"value2", "Z":[{"A":"value3", "B":"value4"}]}' 
k = json.loads(j) 
assert k["Z"][0]["A"] == "value3" 

Edit: Даже simplejson не может декодировать ваш исходный вход.

>>> import simplejson 
>>> s1 = '{"X":value1,"Y":"value2","Z":[{"A":"value3","B":value4}]}' 
>>> simplejson.loads(s1) 
simplejson.decoder.JSONDecodeError: No JSON object could be decoded: line 1 column 0 (char 0) 
>>> s2 = '{"X":"value1", "Y":"value2", "Z":[{"A":"value3", "B":"value4"}]}' 
>>> print simplejson.loads(s2)["Z"][0]["A"] 
value3 
+0

О! две вещи: я использую модуль «simplejson» для анализа данных, а моя строка похожа на недавно отредактированный в моем вопросе ... Используется ли ваш ответ? потому что я использую simplejson.loads (datavariable) – Jmlevick

Смежные вопросы