在 Python 中使用 JSON 模块处理 JSON 文件
Json 是一种非常通用的数据格式, 在Python中使用也非常方便. Python中有内置的 json
模块, 用来编码和解码 json 数据, 其使用也很简单, 在日常运维工作中非常实用.
Table of Contents
Python中的JSON 模块
要使用 json 非常简单,直接 导入该模块就行.
1 | import json |
序列化和反序列化
将 python 数据(list or dict) 编码成json数据的过程通常叫序列化(serialization)
, 相反地则叫做反序列化(deserialization)
. Python中还有类似的模块 - pickle
和 marshal
, 三者的函数是类似的, 但是后两个是python专用的, json 则是通用的.
JSON数据反序列化
json 模块提供了从 json 文件和 json 数据转换到 Python 数据格式的接口: json.load()
和 json.loads()
. json 到 python 的数据格式转换如下表所示.
JSON | Python |
---|---|
object | dict |
array | array |
string | str |
number(int) | int |
number(real) | float |
true | True |
false | False |
null | None |
json.load()
接受一个 file-like object (open("file")
)作为参数,而不是文件名, json.loads()
则是接受一个 string 作为输入.
作为开始,我们先从一个json文件中通过json.load()来读取数据. 下面是一个简单的 json 文件.
1 | { |
我们在Python中导入json文件
1 | >>>import json |
如果你有从别处获取的 json 数据或者 json 格式的 string, 可以通过 json.loads()
来转换到 Python 格式, 多出来的 s
可能就是代表了 string
.
1 | """ json_string= |
Python 数据序列化
下面是 Python 对象序列化时和 json 数据格式之间的一个直观的对应.
Python | JSON |
---|---|
dict | object |
list, tuple | array |
str | string |
int, long,float | number |
True | true |
False | false |
None | null |
json.dump()
会将 python 数据序列化到一个文件对象中, json.dumps()
则会序列化到一个 json string 中. 仍旧以上面的 json 文件作为例子
1 | >>>data=json.load(open("simple.json","r")) |
自定义格式数据序列化和反序列化
todo…