相同点

  1. dump 和 dumps 都实现了序列化
  2. load 和 loads 都实现反序列化

变量从内存中变成可存储或传输的过程称之为序列化
序列化是将对象状态转化为可保存或可传输格式的过程。

变量内容从序列化的对象重新读到内存里称之为反序列化
反序列化是流转换为对象。

区别

1. load 和 loads (反序列化)
load:针对文件句柄,将json格式的字符转换为dict,从文件中读取 (将string转换为dict)

1
a_json = json.load(open('demo.json','r'))

loads:针对内存对象,将string转换为dict (将string转换为dict)

1
a = json.loads('{'a':'1111','b':'2222'}')

2. dump 和 dumps(序列化)

dump:将dict类型转换为json字符串格式,写入到文件 (易存储)

12
a_dict = {'a':'1111','b':'2222'}json.dump(a_dict, open('demo.json', 'w')

dumps:将dict转换为string (易传输)

12
a_dict = {'a':'1111','b':'2222'}a_str = json.dumps(a_dict)

总结

根据序列化和反序列的特性

loads: 是将string转换为dict
dumps: 是将dict转换为string
load: 是将里json格式字符串转化为dict,读取文件
dump: 是将dict类型转换为json格式字符串,存入文件

JSON进阶
序列化

123456789
# 使用class对象的__dict__方法class Student(object):    def __init__(self, name, age, score):        self.name = name        self.age = age        self.score = scoreimport jsons = Student('Bob', 20, 88)print(json.dumps(s, default=lambda obj: obj.__dict__))

反序列化

12345
def dict2student(d):    return Student(d['name'], d['age'], d['score'])

json_str = '{"age": 20, "score": 88, "name": "Bob"}'print(json.loads(json_str, object_hook=dict2student))

python中的序列化和反序列化

Python提供两个模块来实现序列化:cPickle和pickle。这两个模块功能是一样的,区别在于cPickle是C语言写的,速度快,pickle是纯Python写的,速度慢。

  1. 变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling
  2. 变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling
1234
try:    import cPickle as pickleexcept ImportError:    import pickle

1.将内存对象存取到磁盘

12
a = dict(a=1, b=2, c=3)pickle.dumps(a)     # 将对象序列化为str然后存入文件
12
a = dict(a=1, b=2, c=3)pickle.dump(a, open('a.txt', 'wb')) # 使用dump直接把对象序列化为file-like Object,注意是二进制存储

2.从磁盘读取到内存对象

1
pickle.load(open('a.txt', 'rb'))    #从file-like Object中直接反序列化出对象

【python】json中load和loads区别的更多相关文章

  1. json中load和loads区别

    相同点 dump 和 dumps 都实现了序列化 load 和 loads 都实现反序列化 变量从内存中变成可存储或传输的过程称之为序列化序列化是将对象状态转化为可保存或可传输格式的过程. 变量内容从 ...

  2. Python JSON dump ,load,dumps,loads

    JSON是一种轻量级的数据交换格式. json.dump() 将Python数据格式序列化为json数据格式(字符串)并储存在json文件之中. json.load()将Jons数据(字符串)反序列化 ...

  3. python json中的 dumps loads函数

    一.概念理解 1.json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串) (1)json.dumps()函数是将一个Python数据类型列表进行js ...

  4. package.json中dependencies和devDependencies区别

    package.json中dependencies和devDependencies区别 dependencies: 应用能够正常运行依赖的包.用户发布环境,依赖的包不仅开发环境能够使用,生产环境也能使 ...

  5. Python json库中load、loads、dump、dumps的区别与用法

    1 json.loads() 将json格式的数据转化为字典类型 data_json = '{"msg": "登录成功", "code": ...

  6. json -- dump load dumps loads 简单对比

    json.dumps是将一个Python数据类型列表进行json格式的编码解析, 示例如下: >>> import json #导入python 中的json模块>>&g ...

  7. Python 3中bytes/string的区别

    原文:http://eli.thegreenplace.net/2012/01/30/the-bytesstr-dichotomy-in-python-3 python 3中最重要的新特性可能就是将文 ...

  8. 学习python,第四篇:Python 3中bytes/string的区别

    原文:http://eli.thegreenplace.net/2012/01/30/the-bytesstr-dichotomy-in-python-3 python 3中最重要的新特性可能就是将文 ...

  9. Json中dumps、loads、dump、load函数实例讲解

    1.dumps() 1. json.dumps() 用于将字典(dic)类型的数据转成字符串(str),直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到该函数. imp ...

随机推荐

  1. 修改mysql max_allowed_packet 配置

    1:当前默认配置 mysql> show VARIABLES like '%max_allowed_packet%';+--------------------------+---------- ...

  2. ClickHouse中的循环复制集群拓扑

    关系型数据库,但千万级表关联数据库基本上不太可能做到秒出:考虑过Sharding,但数据量大, 各种成本都很高:热数据存储到ElasticSearch,但无法跨索引关联,导致不得不做宽表, 因为权限, ...

  3. Re库入门

    1. 正则表达式语法由字符和操作符构成 . 表示任何单个字符   [] 字符集,对单个字符给出取值范围 [abc]表示a.b.c,[a - z]表示a到z单个字符 [^] 非字符集,对单个字符给出排除 ...

  4. js中基本包装类型详情

    基本包装类型 基本包装类型有Boolean,Number和string类型,每当读取一个基本类型值时,后台就会创建一个对应的基本包装类型对象. 从逻辑上,基本类型值不是对象,没有方法,但从技术上来看, ...

  5. 英语propretie房产

    property (英文释义)  英 ['prɒpəti] 美 ['prɑːpərti] n.财产:所有物:地产,房地产:性质:道具 中文名:房产财产地产 外文名:property.propreti ...

  6. arc079

    D. Decrease (Contestant ver.) 大意: 每次操作选一个最大数$-n$,其余数全$+1$. 要求构造一个序列$a$, 使得恰好$k$次操作后最大值不超过$n-1$. 只要让$ ...

  7. Flink WorkCount代码

    Flink-scala所需依赖 <properties> <flink.version>1.7.0</flink.version> </properties& ...

  8. scanf加不加\n?

    近两天用vs2013敲代码碰到的问题 关于scanf小括号中加不加\n的区别 例程序如下所示: 第一个程序: int main(){ ; printf("你会去敲代码吗?(选择1 or 0) ...

  9. 关于使用jquery form submit出现多次提交的问题

    错误的写法: $(this).submit(function () { $(this).ajaxSubmit({ url: opts.url, type: 'post', dataType: 'jso ...

  10. kali之HexorBase数据库破解

    HexorBase 用户名密码连接数据库 暴力破解 点击底栏 Bruteforces Databases Servers , 然后会弹出一个新界面 Databases Bruteforces 新界面  ...