在Python中解析JSON字符串/对象

6 投票
2 回答
31808 浏览
提问于 2025-04-16 13:38

我最近开始在Python中使用JSON。现在我通过一个POST请求把一个JSON字符串传给Python(Django)。接下来我想解析或者遍历这些数据。但是我找不到一个优雅的方法来解析这些数据,虽然我很确定应该有这样的办法。

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]

我该如何用更简单的方法遍历这些数据,这样我就可以同时遍历键和值呢?

2 个回答

0

为了帮助其他人,在Python3中,dict.iteritems()这个方法被改名为dict.iter()

6

要遍历字典中的键和值,你可以这样写:

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

你可以在这里查看文档:dict.iteritems

撰写回答