笔记:
一:简介
(1)JSON (JavaScript Object Notation) 是一种轻量级(XML重量级)的数据交换格式。
是为了数据交换而定制的一种规则,它基于ECMAScript的一个子集。 (2)JSON是一种数据格式!
字符串是JSON的表现形式。(符合JSON格式的字符串叫做JSON字符串) (3)Python3中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数:
json.dumps(): 对数据进行编码。
json.loads(): 对数据进行解码。
(4)JSON的优点是:易阅读、易解析、网络传输效率高、跨语言交换数据 二:python 编码为JSON类型转换对应表:
_______________________________________________
| python | JSON |
-------------------------------------------------
| dict | object |
-------------------------------------------------
| list,tuple | array |
-------------------------------------------------
| str | string |
-------------------------------------------------
| int,float,Enums | number |
-------------------------------------------------
| True,False,None | true,false,null |
------------------------------------------------- 三: 如果你要处理的是文件而不是字符串,可以使用
json.dump()
json.load() 四:用pickle对数据序列化和反序列化
(1)方法:
pickle.dump()
pickle.load()
pickle.dumps()
pickle.loads()
(2)数据类型:
所有python支持的原生类型:布尔值,整数,浮点数,复数,字符串,字节,None。
由任何原生类型组成的列表,元组,字典和集合。
函数,类,类的实例 五:JSON和pickle之间的区别
JSON序列化和反序列化的目的是将Python数据类型转换为JSON标准类型,
或者将JSON类型的数据转换为python的数据类型,从而实现不同语言之间的数据交换!
pickle:在程序运行过程中希望保存一个数据,重用或者发送给其他人,可以采用这方式
将数据写入文件,支持所有数据类型!
code:
 import json
import pickle
# ----------------------------------------------#
# 反序列化
# ----------------------------------------------#
# object
json_str = '{"name":"qiyue", "age":18}' # JSON字符串
student = json.loads(json_str) # JSON对象转换为字典
print(student)
print(json_str)
print(type(student)) # object
json_str1 = '[{"name":"qiyue", "age":18, "flag":false}, ' \
'{"name":"qiyue", "age":18}]' # JSON字符串
student1 = json.loads(json_str1) # JSON对象转换为字典
print(type(student1), student1)
print(student1[0]) # ----------------------------------------------#
# 序列化
# ----------------------------------------------#
student2 = [
{"name": "qiyue", "age": 18, "flag": False},
{"name": "qiyue", "age": 18}
] json_str1 = json.dumps(student2) # 转换为字符串后可以利用正则表达式处理字符串
print(type(json_str1), json_str1) # ----------------------------------------------#
# 处理的是文件
# ----------------------------------------------#
# 将数据写入文件
student3 = [
{"name": "qiyue", "age": 18, "flag": False},
{"name": "qiyue", "age": 18}
]
with open('data.json', 'w') as f:
json.dump(student3, f) # 读取数据
with open('data.json', 'r') as f:
data = json.load(f) # dumps(object)将对象序列化
list_a = ["English", "Math", "Chinese"]
list_b = pickle.dumps(list_a) # 序列化数据
print(list_a)
print(list_b) # loads(object)将对象原样恢复,并且对象类型也恢复原来的格式
list_c = pickle.loads(list_b)
print(list_c) # dumps(object,file)将对象序列化后存储到文件中
group1 = ("baidu", "wen", "qingtian")
f1 = open('group.txt', 'wb')
pickle.dump(group1, f1, True)
f1.close() # load(object, file)将文件中的信息恢复
f2 = open('group.txt', 'rb')
t = pickle.load(f2)
f2.close()
print(t)

 
 

Python-JSON和pickle的更多相关文章

  1. Python json和pickle模块

    用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps. ...

  2. python json、pickle

    文章部分转自:https://www.cnblogs.com/lincappu/p/8296078.html json:用于字符串和Python数据类型间进行转换pickle: 用于python特有的 ...

  3. Python json与pickle

    这是用于序列化的两个模块: • json: 用于字符串和python数据类型间进行转换 • pickle: 用于python特有的类型和python的数据类型间进行转换 Json模块提供了四个功能:d ...

  4. python json、 pickle 、shelve 模块

    json 模块 用于序列化的模块 json,用于字符串 和 python数据类型间进行转换 Json模块提供了四个功能:dumps.dump.loads.load #!/usr/bin/env pyt ...

  5. python模块(json和pickle模块)

    json和pickle模块,两个都是用于序列化的模块 • json模块,用于字符串与python数据类型之间的转换 • pickle模块,用于python特有类型与python数据类型之间的转换 两个 ...

  6. python学习之day5,装饰器,生成器,迭代器,json,pickle

    1.装饰器 import os import time def auth(type): def timeer(func): def inner(*args,**kwargs): start = tim ...

  7. Python序列化之json与pickle

    1.json介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Progra ...

  8. python序列化模块json和pickle

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

  9. python 序列化之JSON和pickle详解

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

  10. Python常用模块 (2) (loging、configparser、json、pickle、subprocess)

    logging 简单应用 将日志打印到屏幕 import logging logging.debug('debug message') logging.info('info message') log ...

随机推荐

  1. CodeForces 587 E.Duff as a Queen 线段树动态维护区间线性基

    https://codeforces.com/contest/587/problem/E 一个序列, 1区间异或操作 2查询区间子集异或种类数 题解 解题思路大同小异,都是利用异或的性质进行转化,st ...

  2. day16——函数式编程和内置函数

    编程的方法论 面向过程:找到问题的 函数式:不可变.不用变量保存状态.不修改变量 面向对象: 高阶函数: 满足俩个特性任意一个即为高阶函数 1.函数的传入参数是一个函数名 2.函数的返回值是一个函数名 ...

  3. GCD nyoj 1007 (欧拉函数+欧几里得)

    GCD  nyoj 1007 (欧拉函数+欧几里得) GCD 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 The greatest common divisor ...

  4. GrayLog + Logspout + Docker 实现分布式日志聚合

    前提条件:你的服务器上已经安装了Docker和Docker Compose 一.安装GrayLog(Docker方式) version: '2' services: mongodb: image: m ...

  5. Spring Cloud配置中心搭建(集成Git)

    1. 在Github(或其他)创建配置中心仓库bounter-config-repo,然后在仓库创建两个配置文件:simon.properties.susan.properties,链接如下: htt ...

  6. python学习:一

    第三章:实践题作业 1.编写一个名为 collatz()的函数,它有一个名为 number 的参数.如果参数是偶数,那么 collatz()就打印出 number // 2, 并返回该值.如果 num ...

  7. ESP8266莫名重启或者死机问题

    多半是内存使用不当 1. 如果你要用很大长度的数组,那么可以换用更小的数据类型.比如,int值要占用两个字节,你可以用byte(只占用一个字节)代替:    2. esp8266有时会莫明重启,大部分 ...

  8. 在ubuntu18 安装nginx过程,以及遇到的错误!

    1.下载 nginx下载的地址:https://nginx.org/en/download.html 2.解压 指定一个目录下面放置下载的文件,然后解压文件 命令:tar zxvf nginx-1.6 ...

  9. selenium对百度进行登录注销

    #百度登录退出demo import time from selenium import webdriver from selenium.webdriver.common.action_chains ...

  10. loadrunner出现中文乱码

    录制的脚本出现乱码 录制的时候出现乱码,有的时候可以正常回放,我们可以不用管它,但如果影响回放,我们可以使用以下方法解决: 1)更改录制选项 选择菜单栏 Tools --> Recording ...