1
felix021 2013-08-04 14:18:17 +08:00
print d['a']['b']
|
2
likexian 2013-08-04 14:36:36 +08:00
返回了不是直接loads就可以了吗,为什么要先dumps?
|
3
xingxiucun 2013-08-05 13:22:26 +08:00
@likexian d 是字典
|
4
lenciel 2013-08-06 14:26:57 +08:00
首先你说返回格式是:
d = {a:{b:1,c:1,d:[{e:1,g:1},{e:2,g:2}]}} 这肯定不对。它要么是字符串: d = '{a:{b:1,c:1,d:[{e:1,g:1},{e:2,g:2}]}}' 要么是一个dict d = {'a':{'b':1,'c':1,'d':[{'e':1,'g':1},{'e':2,'g':2}]}} 如果返回的是dict,你的代码应该是可以运行的。你遇到的错误肯定是因为返回的是字符串。 |
5
lenciel 2013-08-06 14:39:17 +08:00 1
呃,还是说完吧。
你要明白json.dumps是用来encode(或者说serialize)一个object为json流。你给它的是一个字符串,它返回的也就是个字符串。 所以 d = "{a:{b:1,c:1,d:[{e:1,g:1},{e:2,g:2}]}}" r = json.dumps(d,ensure_ascii=False) # --->这里r也是一个字符串 d = json.loads(r,encoding='gbk') # --->这里d也是一个字符串 因为d是字符串,你用d['a']['b']肯定是错了。如果你返回d[0]啊,d[1]之类的应该就不会报错了。 这些东西你查查json包的文档,已经写得很清楚了: http://docs.python.org/2/library/json.html#top-level-non-object-non-array-values |
6
mengzhuo 2013-08-06 21:22:18 +08:00
楼上的答得很好了
再说明一下,json一般的编码是utf8 |
7
clowwindy 2013-08-06 21:29:15 +08:00
另外,
From RFC4627: 3. Encoding JSON text SHALL be encoded in Unicode. |