标签:real hook 参数 bottom 字符 serial parse 清空 ring
我们平常对 python 对象所进行的操作是在内存中的,当程序关闭时这些对象就会被清空,所以我们需要用一种合适的方法将这些数据保存下来。
为了将我们的数据进行永久存储,需要引入序列化(pickling/serialization)的概念。
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写。
将 python 对象编码(序列化)成 json 字符串。
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‘
示例1:
1 >>> print(json.dumps({‘b‘: ‘Runoob‘, ‘a‘: 7}, sort_keys=True, indent=4, separators=(‘,‘, ‘: ‘))) 2 { 3 "a": 7, 4 "b": "Runoob" 5 }
示例2:
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 |
---|---|
dict | object |
list, tuple | array |
str, unicode | string |
int, long, float | number |
True | true |
False | false |
None | null |
将 json 字串解码成 python 的数据类型,也就是反序列化。
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 |
---|---|
object | dict |
array | list |
string | unicode |
number (int) | int, long |
number (real) | float |
true | True |
false | False |
null | None |
将序列化之后的JSON字串保存到文件中。
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" }
从文件中接收 JSON 串,并反序列化为 Python 的数据类型。
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))
标签:real hook 参数 bottom 字符 serial parse 清空 ring
原文地址:https://www.cnblogs.com/juno3550/p/13276963.html