相同点

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

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

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

区别

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

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

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

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

2. dump 和 dumps(序列化)

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

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

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

  1. 1
    2
  1. 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进阶
序列化

  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
  1. # 使用class对象的__dict__方法
    class Student(object):
    def __init__(self, name, age, score):
    self.name = name
    self.age = age
    self.score = score
    import json
    s = Student('Bob', 20, 88)
    print(json.dumps(s, default=lambda obj: obj.__dict__))

反序列化

  1. 1
    2
    3
    4
    5
  1. def dict2student(d):
    return Student(d['name'], d['age'], d['score'])
  2.  
  3. 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
  1. 1
    2
    3
    4
  1. try:
    import cPickle as pickle
    except ImportError:
    import pickle

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

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

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

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

原文:http://loghb.com/2018/06/27/Pyhton%E5%9C%A8json%E4%B8%ADload%E5%92%8Cloads%E5%8C%BA%E5%88%AB/

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

  1. 【python】json中load和loads区别

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

  2. package.json中dependencies和devDependencies区别

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

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

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

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

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

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

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

  6. Python JSON dump ,load,dumps,loads

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

  7. python json中的 dumps loads函数

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

  8. JSON中的{}与[]的区别

    []:索引数组 {}:关联数组(js中,即对象)

  9. jquery的load()事件和ajax中load()方法的区别

    load事件 当图像加载时,改变 div 元素的文本: $("img").load(function(){ $("div").text("Image ...

随机推荐

  1. LinQ的简单使用

    1.LinQ to Sql类(NET Language Integrated Query (LINQ) ) LINQ定义了大约40个查询操作符,如select.from.in.where以及order ...

  2. JVM调优浅谈(转)

    1.数据类型 java虚拟机中,数据类型可以分为两类:基本类型和引用类型.基本类型的变量保存原始值,即:它代表的值就是数值本身,而引用类型的变量保存引用值.“引用值”代表了某个对象的引用,而不是对象本 ...

  3. mysql --mysqli::multi_query 和 mysqli_multi_query

    语法: 对象化:bool mysqli::multi_query ( string $query ) 过程化:bool mysqli_multi_query ( mysqli $link , stri ...

  4. chmod 4777? 文件特殊权限 SUID SGID StickyBit

    故事引入 今天碰到了一条指令, test 怎么在777前还有一位,颠覆了我的认知啊,这时候必须翻鸟哥神书了,找到一个链接<7.4.3 文件特殊权限:SUID/SGID/Sticky Bit> ...

  5. PHP字符串截取操作大全

    1. 截取GB2312中文字符串 <?php header("content-type:text/html;charset=gb2312"); // echo "a ...

  6. <mvc:annotation-driven />注解详解

    <mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案.<mvc:annotation-dri ...

  7. db2 将逗号分隔数据转换为多值IN列表

    将逗号分隔数据转换为多值IN列表 2010-03-15 11:16:59|  分类: 数据库技术|举报|字号 订阅     下载LOFTER我的照片书  |     原文:http://book.cs ...

  8. 【Python】python-memory-management

    http://deeplearning.net/software/theano/tutorial/python-memory-management.html#python-memory-managem ...

  9. ubuntu 12.04中环境变量设置

    Persistent environment variables So far we've only discussed ways set an environment variable value ...

  10. uilabel 和uitextview 自适应大小

    本文转载至 http://blog.csdn.net/liulichao20/article/details/8957752 分类: ios2013-05-21 22:06 321人阅读 评论(0)  ...