json.loads和json.load的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json.loads和json.load的区别相关的知识,希望对你有一定的参考价值。

load和loads都是实现“反序列化”,区别在于(以Python为例):

    loads针对内存对象,即将Python内置数据序列化为字串

    如使用json.dumps序列化的对象d_json=json.dumps('a':1, 'b':2),在这里d_json是一个字串'"b": 2, "a": 1'

    d=json.loads(d_json)  # b": 2, "a": 1,使用load重新反序列化为dict

    load针对文件句柄

    如本地有一个json文件a.json则可以d=json.load(open('a.json'))

    相应的,dump就是将内置类型序列化为json对象后写入文件

参考技术A

oad和loads都是实现“反序列化”,区别在于(以Python为例):

1.loads针对内存对象,即将Python内置数据序列化为字串

如使用json.dumps序列化的对象d_json=json.dumps('a':1, 'b':2),在这里d_json是一个字串'"b": 2, "a": 1'

d=json.loads(d_json)  # b": 2, "a": 1,使用load重新反序列化为dict

2.load针对文件句柄

如本地有一个json文件a.json则可以d=json.load(open('a.json'))

相应的,dump就是将内置类型序列化为json对象后写入文件

JSON(javascript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

参考技术B 可以加载外部文件
load,dump
从外部JSON文件变成dict字典(外部文件一定要是json格式)
json.lo www.hbbz08.com ad(open('a.json',"r"))
把dict字典变成json格式,生成到外部文件里面
json.dump(dict,open('a.json',"w"))

从内存处理
json="name":"abc"
json.load(json)
从内存处理
dict="name":"abc"
json.load(dict)
参考技术C

    json.load()从文件中读取json字符串

    json.loads()将json字符串转换为字典类型

    json.dumps()将python中的字典类型转换为字符串类型

    json.dump()将json格式字符串写到文件中

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

在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象。在python的标准库中,专门提供了json库与pickle库来处理这部分。

 

json的dumps方法和loads方法,可实现数据的序列化和反序列化。具体来说,dumps方法,可将json格式数据序列为Python的相关的数据类型;loads方法则是相反,把python数据类型转换为json相应的数据类型格式要求。在序列化时,中文汉字总是被转换为unicode码,在dumps函数中添加参数ensure_ascii=False即可解决

 

1.json.dumps()和json.loads()是json格式处理函数

json.dumps()----将Python的字典数据转换成json字符,数据的最外面都添加一层""变为字符串,这也是数据的序列化步骤
(1)情况一

import json

data = {
    \'id\': 1,
    \'name\': \'test1\',
    \'age\': \'1\'
}

json_str1 = json.dumps(data)
print(type(json_str1), \'\\t\', repr(json_str1))
<class \'str\'> 	 \'{"id": 1, "name": "test1", "age": "1"}\'

(2)情况二:

 

  • import json
    
    # python列表(字典)类型转换为json字符串
    data1 = [{
        "id": 1,
        "name": "test1",
        "age": "1"
    }, {
        "id": 2,
        "name": "test2",
        "age": "2"
    }]
    
    json_str1 = json.dumps(data1)		//转化为json字符串
    print("数据类型:", type(data1), repr(data1))
    print("json字符串:", repr(json_str1))
    

     最终结果:

  • 数据类型: <class \'list\'> [{\'id\': 1, \'name\': \'test1\', \'age\': \'1\'}, {\'id\': 2, \'name\': \'test2\', \'age\': \'2\'}]
    json字符串: \'[{"id": 1, "name": "test1", "age": "1"}, {"id": 2, "name": "test2", "age": "2"}]\'
    
  • json.loads()----将json字符串数据转换为字典或列表(去掉外面一层""),这个也是反序列化的步骤。
    import json
    
    data1 = \'\'\'[{
        "id": 1,
        "name": "test1",
        "age": "1"
    }, {
        "id": 2,
        "name": "test2",
        "age": "2"
    }]\'\'\'
    
    # # 将json字符串转换为python列表
    data2 = json.loads(data1)		
    print("data2[\'name\']: ", data2[0]["name"])
    print("data2[\'name\']: ", data2[1]["name"])
    

    最终结果

  • data2[\'name\']:  test1
    data2[\'name\']:  test2
    

    ps://json.loads()里面必须是字符串,如果是列表会报错

  • **TypeError: the JSON object must be str, bytes or bytearray, not \'list\'**
    

    2.读取excel时候常见的坑

    ####(1)excel里面,如果保存的字典如下面所示:
    {‘name’:‘alien’ , ‘age’:18}
    如上的字典,从excel读取完之后,是不能转换成字典dict的
    花括号里面需要使用双引号“”,然后再使用json.loads(目标数据),这样才能转化成字典类型,否者不行

    3.json.dump()和json.load()主要用来读写json文件函数

    (1)json.dump()是写入文件

    # coding: utf-8
    import json
    
    list = [\'Apple\', \'Huawei\', \'selenium\', \'java\', \'python\']
    
    # 写入文件,alien.txt文件最初是空白文件
    with open(\'/Users/test/Python_AutoTest/utilts/alien.txt\', \'w\') as f:
        json.dump(list, f)
    
    # 读取文件
    with open(\'/Users/test/Python_AutoTest/utilts/alien.txt\', \'r\') as f:
        print(f.read())
    

    最终结果

  • ["Apple", "Huawei", "selenium", "java", "python"]
    

    ####(2)json.load()读取文件信息

  • # coding: utf-8
    import json
    
    list = [\'Apple\', \'Huawei\', \'selenium\', \'java\', \'python\']
    
    
    # 读取文件
    with open(\'/Users/test/Python_AutoTest/utilts/alien.txt\', \'r\') as f:
        result = json.load(f)
        print(result)
    

    最终结果

  • [\'Apple\', \'Huawei\', \'selenium\', \'java\', \'python\']
    

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

json.loads和json.load的区别

json.dumps与json.dump的区别 json.loads与json.load的区别

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()的区分

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