## PythonJSON
JSON是用于存储和交换数据的语法。JSON是文本,使用JavaScript对象表示法编写。
Python有一个名为`json`的内置程序包,可用于处理JSON数据。
示例,导入json模块
```
import json
```
*****
## 解析JSON-从JSON转换为Python
如果您有JSON字符串,则可以使用`json.loads()`方法进行解析。结果将是一个Python字典。
示例,从JSON转换为Python:
```
import json
# some JSON:
x = '{ "name":"John", "age":30, "city":"New York"}'
# parse x:
y = json.loads(x)
# the result is a Python dictionary:
print(y["age"])
```
*****
## 从Python转换为JSON
如果您有Python对象,则可以使用`json.dumps()`方法将其转换为JSON字符串。
示例,从Python转换为JSON:
```
import json
# a Python object (dict):
x = {
"name": "John",
"age": 30,
"city": "New York"
}
# convert into JSON:
y = json.dumps(x)
# the result is a JSON string:
print(y)
```
*****
您可以将以下类型的Python对象转换为JSON字符串:
* dict
* list
* tuple
* string
* int
* float
* True
* False
* None
示例,将Python对象转换为JSON字符串,并输出值:
```
import json
print(json.dumps({"name": "John", "age": 30}))
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))
```
*****
从Python转换为JSON时,Python对象将转换为等效的JSON(JavaScript):
| Python | JSON |
| --- | --- |
| dict | Object |
| list | Array |
| tuple | Array |
| str | String |
| int | Number |
| float | Number |
| True | true |
| False | false |
| None | null |
示例,转换包含所有合法数据类型的Python对象:
```
import json
x = {
"name": "John",
"age": 30,
"married": True,
"divorced": False,
"children": ("Ann","Billy"),
"pets": None,
"cars": [
{"model": "BMW 230", "mpg": 27.5},
{"model": "Ford Edge", "mpg": 24.1}
]
}
print(json.dumps(x))
```
*****
## 格式化结果
上面的示例显示了一个JSON字符串,但是它不是很容易阅读,没有缩进和换行符。
该`json.dumps()`方法具有一些参数,可以更轻松地读取结果。
示例,使用`indent`参数定义缩进数量:
```
json.dumps(x, indent=4)
```
您还可以定义分隔符,默认值为(“,”,“:”),这意味着使用逗号和空格分隔每个对象,并使用冒号和空格分隔键和值。
示例,使用`separators`参数更改默认分隔符:
```
json.dumps(x, indent=4, separators=(". ", " = "))
```
*****
## Order the Result
该`json.dumps()`方法具有参数以对结果中的键进行排序。
示例,使用`sort_keys`参数指定结果是否应该排序:
```
json.dumps(x, indent=4, sort_keys=True)
```