2012-02-01 8 views
7

więc mam wich kod Python zwraca łańcuch JSON jak ten:Jak wydrukować określoną wartość JSON w języku Python?

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

Co chcę zrobić, to wydrukować i/lub powrotu (w Pythonie) "value 3" aby ją wykorzystać. Przypisz go również do zmiennej, dzięki czemu będę mógł z nim później pracować.

Jak mogę to zrobić?

+0

Przepraszamy za błąd na kodzie !! thnx! – Jmlevick

+0

UWAGA: Używam modułu "simplejson" do analizy danych. – Jmlevick

+0

Twoje dane wejściowe nadal nie zawierają poprawnego JSON. "wartość1" i "wartość4" muszą znajdować się w cudzysłowach. Nawet 'simplejson' nie może dekodować danych wejściowych. –

Odpowiedz

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

Och! Dwie rzeczy: Używam modułu "simplejson" do analizy danych, a mój ciąg jest jak ostatnio edytowany w pytaniu ... Czy twoja odpowiedź dotyczy? ponieważ używam simplejson.loads (datavariable) – Jmlevick

+0

Dzięki! To działało bezbłędnie w tym, co próbowałem osiągnąć! – Jmlevick

+0

Każdy samouczek, który mogę przeczytać, aby lepiej poznać czytanie pewnych wartości z ciągów JSON w Pythonie? – Jmlevick

3

OK, zakładam swoją JSON wygląda następująco (zauważ " wokół każdego value):

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

Następnie można to zrobić:

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

Edit: Nawet simplejson nie może dekodować oryginalnych danych wejściowych.

>>> 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! Dwie rzeczy: Używam modułu "simplejson" do analizy danych, a mój ciąg jest jak ostatnio edytowany w pytaniu ... Czy twoja odpowiedź dotyczy? ponieważ używam simplejson.loads (datavariable) – Jmlevick

Powiązane problemy