Python JSON



Python JSON

搞懂Python存储和交换数据的用法

JSON 是用于存储和交换数据的语法。JSON 是用 JavaScript 对象表示法(JavaScript object notation)编写的文本。
Python 中的 JSON,Python 有一个名为 json 的内置包,可用于处理 JSON 数据。具体用法如下:
 导入 json 模块
import json

JSON 数据解析

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

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

在json的编解码过程中,python 的原始类型与json类型会相互转换,具体的转化对照如下:
Python 编码为 JSON 类型转换对应表:
Python JSON
dict object
list, tuple array
str string
int, float, int- & float-derived Enums number
True true
False false
None null
JSON 解码为 Python 类型转换对应表:
JSON Python
object dict
array list
string str
number (int) int
number (real) float
true True
false False
null None

解析 JSON - 把 JSON 转换为 Python

若有 JSON 字符串,则可以使用 json.loads() 方法对其进行解析。
结果将是 Python 字典。
实例:把 JSON 转换为 Python:
 # 导入 json 模块
import json
x = '{ "name":"Jack", "age":26, "sex":"woman"}'

# 解析 x:
y = json.loads(x)

# 结果是 Python 字典:
print(["name"])

执行结果:
['name']

把 Python 转换为 JSON

把 Python 转换为 JSON
若有 Python 对象,则可以使用 json.dumps() 方法将其转换为 JSON 字符串。
实例:把 Python 转换为 JSON:
 # 导入 json 模块
import json
x = { "name":"Jack", "age":26, "sex":"woman"}

# 转换为 JSON:
y = json.dumps(x)

# 结果是 JSON 字符串:
print(y)

执行结果:
{"name": "Jack", "age": 26, "sex": "woman"}

还可以把以下类型的 Python 对象转换为 JSON 字符串:

dict
list
tuple
string
int
float
True
False
None

实例:将 Python 对象转换为 JSON 字符串,并打印值:
 # 导入 json 模块
import json
print(json.dumps({"name": "Jack", "age": 18}))
print(json.dumps(["apple", "bananas"]))
print(json.dumps(("apple", "bananas")))
print(json.dumps("hello"))
print(json.dumps(42))
print(json.dumps(31.76))
print(json.dumps(True))
print(json.dumps(False))
print(json.dumps(None))

执行结果:
{"age": 18, "name": "Jack"}
["apple", "bananas"]
["apple", "bananas"]
"hello"
42
31.76
true
false
null

格式化结果

上面的实例打印一个 JSON 字符串,但它不是很容易阅读,没有缩进和换行。
json.dumps() 方法提供了令结果更易读的参数:
实例:使用 indent 参数定义缩进数:
 # 导入 json 模块
import json
x = { "name":"Jack", "age":26, "sex":"woman"}

# 格式化JSON字符串
print(json.dumps(x, indent=4))

执行结果:
{
    "age": 26,
    "name": "Jack",
    "sex": "woman"
}

定义分隔符

您还可以定义分隔符,默认值为(", ", ": "),这意味着使用逗号和空格分隔每个对象,使用冒号和空格将键与值分开:
实例:使用 separators 参数来更改默认分隔符:
 # 导入 json 模块
import json
x = { "name":"Jack", "age":26, "sex":"woman"}

# 分隔JSON字符串
print(json.dumps(x, indent=4, separators=(". ", " = ")))

执行结果:
{
    "age" = 26,
    "name" = "Jack",
    "sex" = "woman"
}

对结果排序

json.dumps() 方法提供了对结果中的键进行排序的参数:
实例:使用 sort_keys 参数来指定是否应对结果进行排序:
 # 导入 json 模块
import json
x = { "name":"Jack", "age":26, "sex":"woman"}

# 分隔JSON字符串
print(json.dumps(x, indent=4, sort_keys=True))

执行结果:
{
    "age" = 26,
    "name" = "Jack",
    "sex" = "woman"
}