JSON 标准库
2021-01-23 05:14
标签:real hook 参数 bottom 字符 serial parse 清空 ring 2.1 json.dumps() 2.2 json.loads() 2.3 json.dump() 2.4 json.load() 我们平常对 python 对象所进行的操作是在内存中的,当程序关闭时这些对象就会被清空,所以我们需要用一种合适的方法将这些数据保存下来。 为了将我们的数据进行永久存储,需要引入序列化(pickling/serialization)的概念。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写。 将 python 对象编码(序列化)成 json 字符串。 较重要的参数: 示例: 示例1: 示例2: 将 json 字串解码成 python 的数据类型,也就是反序列化。 将序列化之后的JSON字串保存到文件中。 示例: 执行结果(文件内容): 从文件中接收 JSON 串,并反序列化为 Python 的数据类型。 示例: JSON 标准库 标签:real hook 参数 bottom 字符 serial parse 清空 ring 原文地址:https://www.cnblogs.com/juno3550/p/13276963.html1. 序列化的简单概念
2. JSON 标准库
1. 序列化的简单概念
2. JSON 标准库
基本用法
序列化方法
反序列化方法
2.1 json.dumps()
语法
json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None,
indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)
1 >>> import json
2 >>> json.dumps({"name":"xiaoming", "age": 18}) # 将字典对象编码成json串(即字符串类型)
3 ‘{"name": "xiaoming", "age": 18}‘
4 >>> json.dumps([]) # 将列表对象编码成json串
5 ‘[]‘
6 >>> json.dumps("string") # 将字符串对象编码成json串
7 ‘"string"‘
8 >>> json.dumps(1) # 将数字对象编码成json串
9 ‘1‘
使用参数让 json 数据格式化输出
1 >>> print(json.dumps({‘b‘: ‘Runoob‘, ‘a‘: 7}, sort_keys=True, indent=4, separators=(‘,‘, ‘: ‘)))
2 {
3 "a": 7,
4 "b": "Runoob"
5 }
1 >>> a = [‘foo‘, {‘bar‘: (‘baz‘, None, 1.0, 2)}]
2 >>> print(json.dumps(a, sort_keys=True, indent=4, separators=(‘!‘, ‘?‘))) # 分隔符这里只是测试,一般保持默认逗号和分号即可
3 [
4 "foo"!
5 {
6 "bar"?[
7 "baz"!
8 null!
9 1.0!
10 2
11 ]
12 }
13 ]
Python 原始类型向 JSON 类型的转化对照表
Python
JSON
dict
object
list, tuple
array
str, unicode
string
int, long, float
number
True
true
False
false
None
null
2.2 json.loads()
语法
json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
示例
1 >>> import json
2 >>> jsonData = ‘{"a":1,"b":2,"c":3,"d":4,"e":5}‘
3 >>> type(jsonData)
4 class ‘str‘>
5 >>> rep = json.loads(jsonData)
6 >>> rep
7 {‘a‘: 1, ‘b‘: 2, ‘c‘: 3, ‘d‘: 4, ‘e‘: 5}
8 >>> type(rep)
9 class ‘dict‘>
JSON 类型转换到 Python 的类型对照表
JSON
Python
object
dict
array
list
string
unicode
number (int)
int, long
number (real)
float
true
True
false
False
null
None
2.3 json.dump()
json.dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True,
allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw) 1 import json
2
3 data = {"name":"xiaoming", "age":21, "gender":"boy"}
4
5 # 第一种方法:使用json.dumps()
6 with open("e:\\json1.txt", "w") as f:
7 f.write(json.dumps(data, indent=4))
8
9 # 第二种方法:使用json.dump()
10 with open("e:\\json2.txt", "w") as f:
11 json.dump(data, f, indent=4)
{
"name": "xiaoming",
"age": 21,
"gender": "boy"
}
2.4 json.load()
json.load(fp, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
1 import json
2
3 data = {"name":"xiaoming", "age":21, "gender":"boy"}
4
5 # 将json串写入文件中
6 with open("e:\\json3.txt", "w") as f:
7 json.dump(data, f, indent=4)
8
9 ## 读取json串
10
11 # 方法1:json.loads()
12 with open("e:\\json3.txt", "r") as f:
13 print(json.loads(f.read()))
14
15 # 方法2:json.load(open())
16 print(json.load(open("e:\\json3.txt")))
17
18 # 方法3:json.load() + with open()
19 with open("e:\\json3.txt") as f:
20 print(json.load(f))