Python 对于json中的行,对象每行返回一个字符

Python 对于json中的行,对象每行返回一个字符,python,Python,每当我执行此代码时 import json, urrlib2 res = urrlib2.urlopen('http://website.com/data.json') data = json.load(res) for line in json.dumps(data["specific"]["data"], sort_keys=True, indent=0): print line 每个字符都打印在新的行中。我使用的是python2.7,我完全不知道出了什么问题。它不应该这样做,因为

每当我执行此代码时

import json, urrlib2
res = urrlib2.urlopen('http://website.com/data.json')
data = json.load(res)
for line in json.dumps(data["specific"]["data"], sort_keys=True, indent=0):
    print line

每个字符都打印在新的行中。我使用的是python2.7,我完全不知道出了什么问题。它不应该这样做,因为当我在for行语句之前打印数据时,我会得到一个格式良好的内容列表。

您需要使用read:

data = res.read()
data = json.load(data)
json.dump(obj)
会将
obj
转换为格式化字符串(可以使用
json.dump(obj,file)
将其写入文件)。当您迭代字符串时,您会迭代其字符:

>>> for line in "abc":
    print(line)


a
b
c
相反,我认为您希望迭代对象的内容,例如:

for line in data["specific"]["data"]:
    print line

json.dumps
创建一个字符串。当你迭代一个字符串时,你可以按字符进行。为什么要使用
.dumps
?@jornsharpe,因为dump总是抛出至少需要两个参数的错误,尽管我给了它两个以上的参数。它的工作原理可能与dumps相同,还是我读错了文档?
json.dumps(obj,…)
创建一个格式化字符串;
json.dumps(obj,f,…)
将字符串写入文件(第二个位置参数)。您试图实现什么?如果您只想迭代内容,请使用
for line in data['specific']['data']:
@jornsharpe哦……是的,这很有道理。非常感谢你,我为此伤了头。