2011-03-14 52 views
4

我最近開始在python中使用JSON。現在我通過一個post請求將一個JSON字符串傳遞給Python(Django)。現在我想解析/迭代這些數據。但我無法找到一個優雅的方式來解析這些數據,這在某種程度上我確定存在。解析Python中的JSON字符串/對象

data = request.POST['postformdata'] 
print data 
{"c1r1":"{\"Choice\":\"i1\"}","c2r1":"{\"Bool\":\"i2\"}","c1r2":"{\"Chars\":\"i3\"}"} 

jdata = json.loads(data) 
print jdata 
{u'c1r2': u'{"Chars":"i3"}', u'c1r1': u'{"Choice":"i1"}', u'c2r1': u'{"Bool":"i2"}'} 

這是預期的。但是現在,當我想獲得價值時,我開始遇到問題。我必須做點像

mydecoder = json.JSONDecoder() 
for part in mydecoder.decode(data):            
    print part 
# c1r2 c1r1 c2r1 ,//Was expecting values as well 

我希望得到的值+鍵,而不是隻是關鍵。現在,我必須使用的按鍵讓使用的東西像值

print jdata[key] 

如何遍歷這個數據以更簡單的方式,讓我可以遍歷鍵,值?

+3

您輸入JSON似乎並不正確,爲什麼c1r1值是一個字符串'ü '{「Choice」:「i1」}'而不是字典'{「Choice」:「i1」}' – 2011-03-14 05:07:19

+0

在瀏覽器端,我使用JSON.stringify對JS對象進行編碼。這可能是一個問題嗎? – Neo 2011-03-14 05:12:18

+0

'stringify'應該沒問題,我用了很多我認爲你的JavaScript對象本身有問題 – 2011-03-14 06:09:15

回答

5

要重複鍵和值,你可以寫

for key, value in jdata.iteritems(): 
    print key, value 

你可以在這裏閱讀文檔:dict.iteritems

+0

這就像一個魅力。謝謝。 – Neo 2011-03-14 05:19:52