关于 Python json中load和loads区别

目录
  • 一、相同点
  • 二、区别
    • 1.load 和 loads (反序列化)
    • 2.dump 和 dumps(序列化)
  • 三、JSON进阶
    • 1.序列化
    • 2.反序列化
  • 四、python中的序列化和反序列化
    • 1.将内存对象存取到磁盘
    • 2.从磁盘读取到内存对象

一、相同点

  • dump dumps 都实现了序列化
  • load loads 都实现反序列化

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

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

二、区别

1.load 和 loads (反序列化)

load:针对文件句柄,将json格式的字符转换为dict,从文件中读取 (将string转换为dict)

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

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

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

2.dump 和 dumps(序列化)

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

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

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

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.序列化

# 使用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__))

2.反序列化

#Python学习交流群:531509025

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提供两个模块来实现序列化:cPicklepickle。这两个模块功能是一样的,区别在于cPickle是C语言写的,速度快,pickle是纯Python写的,速度慢。

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

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

a = dict(a=1, b=2, c=3)
pickle.dumps(a)     # 将对象序列化为str然后存入文件

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

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

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

到此这篇关于关于 Python json中load和loads区别的文章就介绍到这了,更多相关 Python json中load和loads区别内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)

    python3 json数据格式的转换(dumps/loads的使用.dict to str/str to dict.json字符串/字典的相互转换) Python3 JSON 数据解析 JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数: json.dumps(): 对数据进行编码. json.loads(): 对数据进

  • python json.loads兼容单引号数据的方法

    Python的json模块解析单引号数据会报错,示例如下 >>> import json >>> data = "{'field1': 0, 'field2': 'hehehehe', 'field3': 'hahaha'}" >>> json.loads(data) Traceback (most recent call last): File "", line 1, in File "/usr/li

  • Python中json.load()和json.loads()有哪些区别

    一.图解 json.loads():解析一个有效的JSON字符串并将其转换为Python字典 json.load():从一个文件读取JSON类型的数据,然后转转换成Python字典 二.json.loads()用法 1.例子 import json data = { "name": "Satyam kumar", "place": "patna", "skills": [ "Raspberry p

  • 解决Python下json.loads()中文字符出错的问题

    Python:2.7 IDE:Pycharm5.0.3 今天遇到一个问题,就是在使用json.load()时,中文字符被转化为Unicode码的问题,解决方案找了半天,无解.全部代码贴出,很简单的一个入门程序,抓的是有道翻译的,跟着小甲鱼的视频做的,但是他的版本是python3.4,所以有些地方还需要自己改,不多说,程序如下: import urllib#python2.7才需要两个urllib url="http://fanyi.youdao.com/translate?smartresult

  • python处理json字符串(使用json.loads而不是eval())

    eval 跟json.loads 是不一样的函数,是有实现不一样功能的地方,但是在某些地方它们两个函数的功能是一样的,在这个时候如果对执行效率有一定要求的话,建议不要用eval,改用json.loads会有惊喜哦. 一.eval eval() 函数用来执行一个字符串表达式,并返回表达式的值. 二.json.loads json.loads 用于解码 JSON 数据.该函数返回 Python 字段的数据类型. json.loads与eval都能将json字符串转成python中的对象,但在实际工作

  • Python Json模块中dumps、loads、dump、load函数介绍

    Json模块dumps.loads.dump.load函数介绍 1.json.dumps() json.dumps()用于将dict类型的数据转成str,因为如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到该函数. import json name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'} jsObj = json.dumps(name_emb) print(name_emb) print(jsOb

  • Python json模块dumps、loads操作示例

    本文实例讲述了Python json模块dumps.loads操作.分享给大家供大家参考,具体如下: python中json数据的使用. dumps和loads也是需要成对使用的,就像c++ new/delete malloc/free一样需要成对使用. 看着像json的字符串,也不一定是json字符串.哈哈. 具体看例子吧. # -*- coding:utf-8 -*- #! python2 import json data = {"name":"张三", &qu

  • 关于 Python json中load和loads区别

    目录 一.相同点 二.区别 1.load 和 loads (反序列化) 2.dump 和 dumps(序列化) 三.JSON进阶 1.序列化 2.反序列化 四.python中的序列化和反序列化 1.将内存对象存取到磁盘 2.从磁盘读取到内存对象 一.相同点 dump 和 dumps 都实现了序列化 load 和 loads 都实现反序列化 变量从内存中变成可存储或传输的过程称之为序列化序列化是将对象状态转化为可保存或可传输格式的过程. 变量内容从序列化的对象重新读到内存里称之为反序列化反序列化是

  • Python编程中*args与**kwargs区别作用详解

    相信学Python的小伙伴肯定有这样的尴尬局面,给一个函数不会用, 原因是:不知道参数列表中的类型是什么意思,比如初学者都会疑问的:*args和**kwargs到底是怎么用. 当你知道这个时,我猜你肯定能会用好多函数了! #*args的用法:当传入的参数个数未知,且不需要知道参数名称时. def func_arg(farg, *args): print("formal arg:", farg) for arg in args: print("another arg:"

  • Python Flask中Cookie和Session区别详解

    目录 前言 安装 创建虚拟环境 进入虚拟环境 安装 flask Cookie的使用 Session的使用 前言 本篇文章,阐述一下Flask中Cookie和Session 为什么要说Cookie和Session呢? 答:因为http请求是无状态的,怎么理解呢?当你访问B站时,如果你没有Cookie或者Session,B站就认为你是一个没有登录的用户.如果你有Cookie或Session,那么B站就知道你登录了,并且知道你是谁.所以可以把跟你相关的资料返回 给你两者的区别: 答:Cookie是明文

  • Python json模块与jsonpath模块区别详解

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适用于进行数据交互的场景,比如网站前台与后台之间的数据交互. JSON和XML相比较可谓不相上下. Python 3.X中自带了JSON模块,直接import json就可以使用了. 官方文档:http://docs.python.org/library/json.html Json在线解析网站:http://www.json.cn/ JS

  • 聊聊python中的load、loads实现反序列化的问题

    load与loads 简介: 在python自动化中,我们传递一些参数是需要从文件中读取过来的,读取过来的字典并非python对象数据类型而是string类型. 这样在我们传递参数的时候就会出现格式不正确的情况,这时候就要用到load实现反序列化 python对象数据类型包括list ,dict,tuple,set等 案例1:load load:load主要处理的是文件流 首先我们新建一个txt文件,文件中写入一个字典 {"a":"1","b":

  • python中的load、loads实现反序列化示列

    目录 1.简介 2.案例1:load 3.案例2:loads 1.简介 在python自动化中,我们传递一些参数是需要从文件中读取过来的,读取过来的字典并非python对象数据类型而是string类型. 这样在我们传递参数的时候就会出现格式不正确的情况,这时候就要用到load实现反序列化 python对象数据类型包括list ,dict,tuple,set等 2.案例1:load load:load主要处理的是文件流 首先我们新建一个txt文件,文件中写入一个字典 {"a":"

  • python json load json 数据后出现乱序的解决方案

    众所周知:python json 可以转换的json字符串,但是在将其转换为字典时,出现了乱序 字典是一个散列结构,亦即他自身根据key进行排序,无法保证顺序 import json jsonstr = '{"username":"string","age":"int","income":"float","createdTime":"date"}'

  • python json.dumps() json.dump()的区别详解

    以前写的很简单,只有几句话,最近发现本文是本博客阅读量最大的一篇文章,觉得这样有种把人骗进来的感觉,于是又细化了一些.如果还有不好的地方,欢迎指出. 首先说明基本功能: dumps是将dict转化成str格式,loads是将str转化成dict格式. dump和load也是类似的功能,只是与文件操作结合起来了. 看代码实例: In [1]: import json In [2]: a = {'name': 'wang', 'age': 29} In [3]: b = json.dumps(a)

随机推荐