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

Posted

技术标签:

【中文标题】json.dumps 和 json.load 有啥区别? [关闭]【英文标题】:What is the difference between json.dumps and json.load? [closed]json.dumps 和 json.load 有什么区别? [关闭] 【发布时间】:2015-12-30 21:50:21 【问题描述】:

json.dumpsjson.load 有什么区别?

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

【问题讨论】:

【参考方案1】:

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 中的对象。字符串本身不会是一个对象吗?那你怎么能在两者之间转换呢?抱歉这个愚蠢的问题。 我在“str 以外的类型”的意义上使用object。像'"foo"' 这样的字符串被解码为Python str 对象'foo';像"[1,2,3]" 这样的字符串被解码为Python 列表[1,2,3] dumps()- 编码为 JSON 对象 dump()- 编码字符串写入文件 loads()- 解码 JSON 字符串 load()- 读取 JSON 文件时解码【参考方案2】:

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

json dumps -> 从一个对象返回一个表示 json 对象的字符串。

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

【讨论】:

> json dumps -> 从字典中返回一个表示 json 对象的字符串。这很接近,但它不一定是你传递给 json.dumps() 的字典。您可以传递一个列表、一个字符串或一个布尔值..

以上是关于json.dumps 和 json.load 有啥区别? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

python中json文件处理涉及的四个函数json.dumps()和json.loads()json.dump()和json.load()的区分

Python中json文件处理的四个函数json.dumps()json.loads()json.dump()和json.load()的区分

python中json.dumps()和json.dump() 以及 json.loads()和json.load()的区分

python中json文件处理涉及的四个函数json.dumps()和json.loads()json.dump()和json.load()的区分

python中json文件处理涉及的四个函数json.dumps()和json.loads()json.dump()和json.load()的区分

json.loads和json.load的区别