2012-02-01 20 views
7

así que tengo un wich código Python devuelve una cadena JSON como éste:¿Cómo imprimir un valor JSON particular en Python?

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

Lo que quiero hacer es imprimir y/o devolver (en Python) "value 3" con el fin de usarlo. Además, asígnelo a una variable para que pueda trabajar con ella más adelante.

¿Cómo puedo hacer esto?

+0

¡Perdón por el error en el código! THX! – Jmlevick

+0

NOTA: Estoy usando el módulo "simplejson" para analizar los datos – Jmlevick

+0

Su entrada todavía no es JSON válida. 'value1' y' value4' deben estar dentro de las comillas. Incluso 'simplejson' no puede decodificar su entrada. –

Respuesta

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

¡Oh! dos cosas: estoy usando el módulo "simplejson" para analizar los datos, y mi cadena es como la recientemente editada en mi pregunta ... ¿Se aplica la respuesta? porque estoy usando simplejson.loads (datavariable) – Jmlevick

+0

¡Gracias! ¡Esto funcionó perfectamente para lo que estaba tratando de lograr! – Jmlevick

+0

¿Algún tutorial que pueda leer para familiarizarme con la lectura de ciertos valores de cadenas JSON en Python? – Jmlevick

3

bien, supongo que su JSON se parece a esto (tenga en cuenta la " alrededor de cada value):

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

entonces usted puede hacer esto:

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

Editar: Incluso simplejson no puede decodificar su entrada original.

>>> 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

¡Oh! dos cosas: estoy usando el módulo "simplejson" para analizar los datos, y mi cadena es como la recientemente editada en mi pregunta ... ¿Se aplica la respuesta? porque estoy usando simplejson.loads (datavariable) – Jmlevick

Cuestiones relacionadas