【问题标题】: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 加载到字典中,另一个加载到对象中。

【问题讨论】:

    标签: python 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() 的字典。您可以传递一个列表、一个字符串或一个布尔值..
    猜你喜欢
    • 2017-02-04
    • 1970-01-01
    • 2016-07-03
    • 2013-06-18
    • 1970-01-01
    • 2010-12-10
    • 2011-09-20
    • 2013-03-25
    相关资源
    最近更新 更多