linux shell 变量 json bumber,Python序列化之json与pickle

1、json介绍

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。

Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数:

json.dumps():对数据进行编码

json.loads():对数据进行解码

json.dumps与json.loads实例

以下实例演示了 Python 数据结构转换为JSON

#!/usr/bin/env python

# _*_ coding:utf-8 _*_

# Author: enzhi.wang

import json

# 将python的基础数据类型转化成字符串

dic = {"k1":"v1","k2":"v2"}

print("Python原始数据:",repr(dic),type(dic))

result = json.dumps(dic) #将字典类型转换为字符串类型

print("JSON对象:",result,type(result))

执行以上代码输出结果为:

C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day4/json序列化.py

Python原始数据: {'k1': 'v1', 'k2': 'v2'}

JSON对象: {"k1": "v1", "k2": "v2"}

通过输出的结果可以看出,简单类型通过编码后跟其原始的repr()输出结果非常相似。

接着以上实例,我们可以将一个JSON编码的字符串转换回一个Python数据结构:

#!/usr/bin/env python

# _*_ coding:utf-8 _*_

# Author: enzhi.wang

import json

# 将python的基础数据类型转化成字符串

dic = {"k1":"v1","k2":"v2"}

print("Python原始数据:",repr(dic),type(dic))

result = json.dumps(dic) #将字典类型转换为字符串类型

print("JSON对象:",result,type(result))

# 将python字符串类型转化为python基本数据类型

result = json.loads(result)

print("result['k1']:",result['k1'])

print("result['k2']:",result['k2'])

执行以上代码输出结果为:

C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day4/json序列化.py

Python原始数据: {'k1': 'v1', 'k2': 'v2'}

JSON对象: {"k1": "v1", "k2": "v2"}

result['k1']: v1

result['k2']: v2

如果你要处理的是文件而不是字符串,你可以使用 json.dump() 和 json.load() 来编码和解码JSON数据。例如:

data = {

"name":"wangenzhi",

"age":25,

"job":"ops"

}

# 写入json数据

with open('db.json','w') as f:

json.dump(data,f)

# 读取json数据

with open('db.json','r') as f:

res = json.load(f)

print(res,type(res))

2、pickle介绍

pickle模块使用的数据格式是python专用的,并且不同版本不向后兼容,同时也不能被其他语言说识别。要和其他语言交互,可以使用内置的json 包使用pickle模块你可以把Python对象直接保存到文件,而不需要把他们转化为字符串,也不用底层的文件访问操作把它们写入到一个二进制文件里。 pickle模块会创建一个python语言专用的二进制格式,你基本上不用考虑任何文件细节,它会帮你干净利落地完成读写独享操作,唯一需要的只是一个合法的文件句柄。

python3中可以使用pickle模块,对数据进行编解码。它包含两个函数:

pickle.dumps()

pickle.loads()

pickle.dumps与pickle.loads实例

#!/usr/bin/env python

# _*_ coding:utf-8 _*_

# Author: enzhi.wang

import pickle

data = {

"name":"wangenzhi",

"age":25,

"job":"ops"

}

print("原始python对象:",repr(data))

r = pickle.dumps(data)

print("pickle转换后的对象:",r)

res = pickle.loads(r)

print("res['name']:",res['name'])

print("res['age']:",res['age'])

print("res['job']:",res['job'])

执行以上代码输出结果为:

C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day4/pickle序列化.py

原始python对象: {'name': 'wangenzhi', 'job': 'ops', 'age': 25}

pickle转换后的对象: b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\t\x00\x00\x00wangenzhiq\x02X\x03\x00\x00\x00jobq\x03X\x03\x00\x00\x00opsq\x04X\x03\x00\x00\x00ageq\x05K\x19u.'

res['name']: wangenzhi

res['age']: 25

res['job']: ops

如果你要处理的是文件而不是字符串,你可以使用 pickle.dump() 和 pickle.load() 来编码和解码JSON数据。例如:

import pickle

data = {

"name":"wangenzhi",

"age":25,

"job":"ops"

}

# 写入数据,要以wb格式写入

pickle.dump(data,open('db','wb'))

# 读取数据,要以rb格式读取

f = open('db','rb')

res = pickle.load(f)

print(res)

执行以上代码输出结果为:

C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day4/pickle序列化.py

{'job': 'ops', 'name': 'wangenzhi', 'age': 25}

小结

JSON:适合跨语言,对于python而言仅适用于Python基本数据类型

pickle:仅适用于python,pickle适用于python所有数据类型的序列化

python序列化模块json和pickle

序列化相关 1. json 应用场景: json模块主要用于处理json格式的数据,可以将json格式的数据转化为python的字典,便于python处理,同时也可以将python的字典或列表等对象转 ...

python 序列化之JSON和pickle详解

JSON模块 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类 ...

【转】Python之数据序列化(json、pickle、shelve)

[转]Python之数据序列化(json.pickle.shelve) 本节内容 前言 json模块 pickle模块 shelve模块 总结 一.前言 1. 现实需求 每种编程语言都有各自的数据类型 ...

python序列化: json & pickle & shelve 模块

一.json & pickle & shelve 模块 json,用于字符串 和 python数据类型间进行转换pickle,用于python特有的类型 和 python的数据类型间进 ...

Python之数据序列化(json、pickle、shelve)

本节内容 前言 json模块 pickle模块 shelve模块 总结 一.前言 1. 现实需求 每种编程语言都有各自的数据类型,其中面向对象的编程语言还允许开发者自定义数据类型(如:自定义类),Py ...

python 数据序列化(json、pickle、shelve)

本来要查一下json系列化自定义对象的一个问题,然后发现这篇博客(https://www.cnblogs.com/yyds/p/6563608.html)很全面,感谢作者,关于python序列化的知识 ...

python常见模块之序列化(json与pickle以及shelve)

什么是序列化? 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flatte ...

python序列化模块 json&&pickle&&shelve

#序列化模块 #what #什么叫序列化--将原本的字典.列表等内容转换成一个字符串的过程叫做序列化. #why #序列化的目的 ##1.以某种存储形式使自定义对象持久化 ##2.将对象从一个地方传递 ...

python中序列化模块json和pickle

json模块:json是第三方包,不是系统内置模块,以字符串序列 常用操作有: json.dumps() # 将变量序列化,即将功能性字符转化为字符串 例: >>> import j ...

随机推荐

Native OR WebApp ?

前两天刚好和一帮产品同学聊过,特指一个APP里面的各页面应该怎么做,大家的总结如下,原理一样,关键是了解Native和Web各自的优劣势:1. 偏交互的Native,偏浏览的Web:交互指复杂操作,输 ...

Hibernate3注解

1.@Entity(name="EntityName") 必须,name为可选,对应数据库中一的个表 2.@Table(name="",catalog=&quo ...

scala学习笔记:理解函数

定义一个函数: scala> def foo(x:Int)=x*2 foo: (x: Int)Int 可以采用匿名参数: scala> def foo:((Int)=>Int) = ...

整型(int)转时间格式字符串及页面long型转时间格式字符串

1,如果是封装的整型的话需要在后台进行处理再返回页面 处理过程是这样的 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm ...

基于GruntJS前端性能优化

在本文中,如何使用GruntJS为了使治疗简单的前端性能优化自己主动,我写了一个完整的样本放在Github上.能够參考一下.关于Yahoo的前端优化规则请參考:Best Practices for S ...

Android----paint触摸轨迹监听

paint触摸轨迹监听,主要是三种而已,ACTION_DOWN,ACTION_MOVE,ACTION_UP public boolean onTouchEvent(MotionEvent event) ...

织梦cms网上复制图片不可用的解决方法

背景描述: 织梦cms采集图片集时, 需要使用织梦cms提供的"网上复制图片"的功能, 好像我这里这个功能一直不可用, 今天下定决心研究了下源代码并进行了适当修改, 将我的修改提供 ...

痞子衡嵌入式:串口调试工具Jays-PyCOM诞生记(6)- 打包发布(PyInstaller3.3.1)

大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是串口调试工具Jays-PyCOM诞生之打包发布. 经过上一篇软件优化之后,Jays-PyCOM已经初长成,该到了出去历练的时候了,只有经 ...

IO流技术

IO流常用基类 字节流的抽象基类:InputStream,OutputStream 字符流的抽象基类:Reader,Writer Writer类 子类:BufferedWriter,CharArray ...

PHP菜刀工具WebHandler

PHP菜刀工具WebHandler   在Web渗透测试中,后台代码如果包含系统命令执行功能,并以用户提交的数据作为参数,就带来潜在的安全隐患.Kali Linux提供一款PHP菜单工具WebHand ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值