1

我有大量的 stackoverflow 并且之前从未发现需要提出问题,虽然关于这个主题有很多线程,但我似乎无法找到简单且有意义的东西。如果我以某种方式错过了什么,请提供链接。

这里是:我正在尝试使用 json 在 python 客户端/服务器之间来回传递列表,但我将问题浓缩成一个块来说明:

import json
testdata = ['word','is','bond', False, 6, 99]
# prints normal iterable list
print testdata

myjson = json.dumps(testdata)

#prints [u'word', u'is', u'bond', False, 6, 99], which contains unicode strings
print json.loads(myjson)

# Iterates over each character, since apparently, Python does recognize it is a list
for i in myjson:
    print i

这似乎是错误的。我传入了一个可迭代的列表,我得到了一些不能以这种方式使用的东西。我已经看到很多答案表明我应该只“处理 unicode”,如果我知道怎么做的话。我需要一种方法来强制 json 以 ascii 或 utf-8 或其他方式加载,或者一种允许 python 正常迭代包含 unicode 字符串的列表的方法。

谢谢!

4

2 回答 2

2

问题是您正在迭代myjson字符串,而不是json.loads(myjson)迭代列表的结果。

myjson = json.dumps(testdata)

mydata = json.loads(myjson)
#prints [u'word', u'is', u'bond', False, 6, 99], which contains unicode strings
print mydata
#prints ["word", "is", "bond", false, 6, 99], which is still just a string
print myjson

# Iterates over each character, since it's a string
for i in myjson:
    print i
# Iterates over the list
for i in mydata:
    print i
于 2013-08-24T00:12:56.623 回答
1

json.dumps(testdata)给你一个字符串......所以迭代字符串会给你单个字符。您的代码正在执行您要求它执行的操作。

json.loads不会变量执行就地修改——所以myjson当你迭代它时它仍然是一个字符串。

于 2013-08-24T00:13:19.113 回答