JSON(JavaScript Object Notation, JS对象标记)是一中轻量级的数据交换格式,大部分语言都支持

Python3中的json提供了对json格式数据的序列化支持

  json.dump(obj, fileobj)

    将Python对象序列化成json字符串并写入到打开的文件对象中

import json

# 写入json数据
with open("demo.txt", "w") as f:
data = {"one": 1, "Two": 2, "Three": 3, "Hello": "你好"}
json.dump(data, f)

  json.load(fileobj)

    返回读取打开的文件对象中的所有json字符串,并转成Python对象

import json

# 读取json数据(只能一次性读取全部,不能像pickle一样分次load())
with open("demo.txt", "r") as f2:
print(json.load(f2))

  json.dumps(obj)  

    将Python对象转换成json字符串

  json.loads(json_str)  

    将json字符串转换成Python对象

import json

data = {"one": 1, "Two": 2, "Three": 3, "Hello": "你好"}
json_str = json.dumps(data) # json格式数据编码
print(json_str) # 输出结果: {"one": 1, "Two": 2, "Three": 3, "Hello": "\u4f60\u597d"} result = json.loads(json_str) # json格式数据解码
print(result) # {'one': 1, 'Two': 2, 'Three': 3, 'Hello': '你好'}

Python3中的pickle提供了对几乎所有的Python对象的序列化支持

  pickle.dump(obj, fileobj)

    将Python对象序列化成pickle字节数据并写入到打开的文件对象中

  pickle.load(fileobj)

    返回读取打开的文件对象中的第n次dump()的pickle字节数据,并转成Python对象

  pickle.dumps(obj)  

    将Python对象转换成pickle字节数据

  pickle.loads(pickle_bytes)  

    将pickle字节数据转换成Python对象

import pickle

class User:
username = "Jet" data = {"one": 1, "Two": 2, "Three": 3, "Hello": "你好"} # pickle数据序列化写入,几乎支持所有Python对象
with open("pickle_data.txt", "wb") as wf:
u = User()
pickle.dump(u, wf)
pickle.dump(data, wf) # pickle序列化数据读取,有几次dump()就可以load()几次
with open("pickle_data.txt", "rb") as rf:
print(pickle.load(rf).username) # 输出结果: Jet
print(pickle.load(rf)) # 输出结果: {'one': 1, 'Two': 2, 'Three': 3, 'Hello': '你好'}

json模块和pickle模块的区别

  1.JSON是一中文本序列化格式(它输出unicode文本,大多数时候为UTF-8),而Pickle是一个二进制的序列化格式

  2.JSON是人类可读的,而Pickle不是

  3.JSON是可互操作的,很多编程语言都支持,而pickle是特定于Python语言交互的

  4.json模块支持的Python对象只有几个,如字典、字符串、数字等,而pickle几乎全部支持

参考资料

  http://python.usyiyi.cn/translate/python_352/library/json.html

  http://python.usyiyi.cn/translate/python_352/library/pickle.html

Python3-json & pickle 序列化的更多相关文章

  1. Python3基础(4)匿名函数、装饰器、生成器、迭代器、内置函数、json&pickle序列化、软件目录开发规范、不同目录间模块调用

    ---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1 ...

  2. Python3 json &pickle 数据序列化

    json 所有语言通用的信息交换格式 json.dumps()将list列表.dict字典.元组.函数等对象转换为可以存储的字符格式存入文件 json.dump(数据对象名,已以写方式打开的对象) 直 ...

  3. json&pickle序列化

    一.用途 我们需要将内存中的数据进行序列化,即写入文件中时,写入的类型只能是字符串或者二进制类型.但是如果我们想要将复杂一些的数据类型,如:列表.字典或者函数之类的同样进行序列化,我们就要用到 jso ...

  4. json & pickle 序列化

    #!/usr/bin/python # -*- coding: utf-8 -*- # 序列化: 例如把字典写进文件 info = { 'name': 'alex', 'age': 22 } f = ...

  5. json&pickle序列化和软件开发规范

    json和pickle 用于序列化的两个模块 json   用于字符串和python数据类型间进行转换,json只支持列表,字典这样简单的数据类型 但是它不支持类,函数这样的数据类型转换 pickle ...

  6. 13、Python文件处理、os模块、json/pickle序列化模块

    一.字符编码 Python3中字符串默认为Unicode编码. str类型的数据可以编码成其他字符编码的格式,编码的结果为bytes类型. # coding:gbk x = '上' # 当程序执行时, ...

  7. Python序列化,json&pickle&shelve模块

    1. 序列化说明 序列化可将非字符串的数据类型的数据进行存档,如字典.列表甚至是函数等等 反序列化,将通过序列化保存的文件内容反序列化即可得到数据原本的样子,可直接使用 2. Python中常用的序列 ...

  8. 第五章 模块之 shtil 、 json / pickle、importlib、collections

    5.8 shtil 高级的 文件.文件夹.压缩包 处理模块 shutil.rmtree 删除目录 import shutilshutil.rmtree(path) shutil.move 重命名:移动 ...

  9. Python3 json、pickle序列化与反序列化

    注意:可以dumps多次,loads只能一次,一般我们只dumps一次,loads一次,多个版本就写入多个文件 一.json序列化与反序列化: 支持各种语言数据交互,但只能处理字典,列表,集合等简单的 ...

  10. Python的json and pickle序列化

    json序列化和json反序列化 #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = '人生入戏' import json a = ...

随机推荐

  1. Unable to start services. See log file /tmp/vmware-root/vmware-6853.log for details.

    debian安装vmware错误 https://github.com/AdministratorGithub/vmshell vm15.1.0解决linux安装出现Unable to start s ...

  2. Rocket - tilelink - Nodes

    https://mp.weixin.qq.com/s/KJ8pVH76rdxPOZ1vE3QlKA   简单介绍tilelink对Diplomacy Nodes的实现.   ​​   1. TLImp ...

  3. Chisel3 - Tutorial - VendingMachine

    https://mp.weixin.qq.com/s/tDpUe9yhwC-2c1VqisFzMw   演示如何使用状态机.   参考链接: https://github.com/ucb-bar/ch ...

  4. HttpServletRequest对象,请求行、请求头、请求体

    HttpServletRequest 公共接口类HttpServletRequest继承自ServletRequest.客户端浏览器发出的请求被封装成为一个HttpServletRequest对象.对 ...

  5. Java实现 LeetCode 79 单词搜索

    79. 单词搜索 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻"单元格是那些水平相邻或垂直相邻的单元格. ...

  6. java实现股票的风险

    股票的风险 股票风险 股票交易上的投机行为往往十分危险.假设某股票行为十分怪异,每天不是涨停(上涨10%)就是跌停(下跌10%).假设上涨和下跌的概率均等(都是50%).再假设交易过程没有任何手续费. ...

  7. Java实现第九届蓝桥杯等腰三角形

    等腰三角形 题目描述 本题目要求你在控制台输出一个由数字组成的等腰三角形. 具体的步骤是: 1. 先用1,2,3,...的自然数拼一个足够长的串 2. 用这个串填充三角形的三条边.从上方顶点开始,逆时 ...

  8. 彻底解决go get golang.org/x等包失败与VSCode golang插件安装失败问题

    由于某种众所周知的一些原因,https://golang.org/ golang 的官方域名是被墙了的,这也就导致了, 在广大 go 开发者使用 golang 的时候,总会出现 go get 失败的问 ...

  9. iOS -实现UIView圆角显示的方法

    添加一个UIView时,默认直角显示有时对于有强迫症的患者还真有点不舒服! eg: 怎么实现UIview的圆角显示呢? 首先包含一个头文件: #import <QuartzCore/Quartz ...

  10. Mysql(Mariadb)数据库主从

    Mysql主从复制的实现原理图大致如下: MySQL之间数据复制的基础是以二进制日志文件(binary log file)来实现的,一台MySQL数据库一旦启用二进制日志后,其作为master,它数据 ...