json.dumps和json.load有什么区别?[关闭]


143

json.dumps和之间有什么区别json.load

据我了解,一个将JSON加载到字典中,另一个则加载到对象中。

Answers:


190

dumps 接受一个对象并产生一个字符串:

>>> a = {'foo': 3}
>>> json.dumps(a)
'{"foo": 3}'

load 将采用类似文件的对象,从该对象读取数据,然后使用该字符串创建一个对象:

with open('file.json') as fh:
    a = json.load(fh)

需要注意的是dumpload文件和对象,而之间的转换dumpsloads相互转换的字符串和对象。您可以将s-less函数视为函数的包装器s

def dump(obj, fh):
    fh.write(dumps(obj))

def load(fh):
    return loads(fh.read())

这对我的理解很有帮助。仍然有些困惑,因为我认为一切都是Python中的对象。字符串本身不是对象吗?那你怎么能在两者之间转换呢?很抱歉这个愚蠢的问题。
鲍文刘

我使用object的是“类型以外的东西str”。像这样的字符串'"foo"'被解码到Python str对象'foo'; 像这样的字符串"[1,2,3]"被解码到Python列表[1,2,3]
。– chepner

dumps()-编码到JSON对象 dump()-编码字符串写入文件上loads()-解码JSON字符串load()-解码而JSON文件读取
贾米勒Noyda

74

json加载->从代表json对象的字符串中返回一个对象。

json dumps->从对象返回代表json对象的字符串。

加载和转储->从文件读/写到文件而不是字符串


10
> json dumps->从字典返回代表json对象的字符串。那已经很接近了,但是您传递给json.dumps()并不一定是一个命令。你可以通过一个列表,或者一个字符串或布尔..
罗斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.