2012-02-01 36 views
7

Vì vậy, tôi có một mã Python Mà trả về một chuỗi JSON như thế này:Cách in giá trị JSON cụ thể bằng Python?

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

Những gì tôi muốn làm là in và/hoặc trả lại (bằng Python) "value 3" để sử dụng nó. Cũng gán nó cho một biến để tôi có thể làm việc với nó sau này.

Tôi làm cách nào để thực hiện việc này?

+0

Xin lỗi vì lỗi trên mã !! thnx! – Jmlevick

+0

LƯU Ý: Tôi đang sử dụng mô-đun "simplejson" để phân tích cú pháp dữ liệu – Jmlevick

+0

Dữ liệu nhập của bạn vẫn không có JSON hợp lệ. 'value1' và' value4' phải nằm trong dấu ngoặc kép. Ngay cả 'simplejson' cũng không thể giải mã đầu vào của bạn. –

Trả lời

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

Ồ! hai điều: Tôi đang sử dụng mô-đun "simplejson" để phân tích cú pháp dữ liệu và chuỗi của tôi giống như chuỗi được chỉnh sửa gần đây trong câu hỏi của tôi ... Câu trả lời của bạn có áp dụng không? bởi vì tôi đang sử dụng simplejson.loads (datavariable) – Jmlevick

+0

Cảm ơn! Điều này làm việc hoàn hảo cho những gì tôi đã cố gắng để đạt được! – Jmlevick

+0

Bất kỳ hướng dẫn nào tôi có thể đọc để làm quen với việc đọc các giá trị nhất định từ các chuỗi JSON bằng Python? – Jmlevick

3

OK, tôi giả JSON của bạn trông như thế này (chú ý " xung quanh mỗi value):

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

Sau đó, bạn có thể làm điều này:

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

Edit: Thậm chí simplejson không thể giải mã đầu vào ban đầu của bạn.

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

Ồ! hai điều: Tôi đang sử dụng mô-đun "simplejson" để phân tích cú pháp dữ liệu và chuỗi của tôi giống như chuỗi được chỉnh sửa gần đây trong câu hỏi của tôi ... Câu trả lời của bạn có áp dụng không? vì tôi đang sử dụng simplejson.loads (datavariable) – Jmlevick

Các vấn đề liên quan