# Python 和 JSON 编码和解码

> 原文： [https://pythonspot.com/json-encoding-and-decoding-with-python/](https://pythonspot.com/json-encoding-and-decoding-with-python/)

## 简介

[JSON（JavaScript 对象表示法）](https://en.wikipedia.org/wiki/JSON)在[服务器](https://pythonspot.com/en/python-network-sockets-programming-tutorial/)和 Web 应用程序之间经常使用。 JSON 数据的示例：

```py
{
    "persons": [
        {
            "city": "Seattle", 
            "name": "Brian"
        }, 
        {
            "city": "Amsterdam", 
            "name": "David"
        }
    ]
}

```

`json`模块使您可以在 JSON 和 Python 对象之间进行转换。

## JSON 转换示例

## 将 JSON 转换为 Python 对象（字典）

要将 JSON 转换为 Python [字典](https://pythonspot.com/python-dictionaries/)，请使用以下命令：

```py
import json

json_data = '{"name": "Brian", "city": "Seattle"}'
python_obj = json.loads(json_data)
print python_obj["name"]
print python_obj["city"]

```

## 将 JSON 转换为 Python 对象（列表）

JSON 数据可以直接映射到 Python [列表](https://pythonspot.com/python-lists/)。

```py
import json

array = '{"drinks": ["coffee", "tea", "water"]}'
data = json.loads(array)

for element in data['drinks']:
    print element

```

## 将 JSON 转换为 Python 对象（浮点）

浮点数可以使用十进制库进行映射。

```py
import json
from decimal import Decimal

jsondata = '{"number": 1.573937639}'

x = json.loads(jsondata, parse_float=Decimal)
print x['number']

```

## 将 JSON 转换为 Python 对象（示例）

JSON 数据通常包含多个对象，下面是如何使用该对象的示例：

```py
import json

json_input = '{"persons": [{"name": "Brian", "city": "Seattle"}, {"name": "David", "city": "Amsterdam"} ] }'

try:
    decoded = json.loads(json_input)

    # Access data
    for x in decoded['persons']:
        print x['name']

except (ValueError, KeyError, TypeError):
    print "JSON format error"

```

## 将 Python 对象（字典）转换为 JSON

如果要将 Python 对象转换为 JSON，请使用`json.dumps()`方法。

```py
import json
from decimal import Decimal

d = {}
d["Name"] = "Luke"
d["Country"] = "Canada"

print json.dumps(d, ensure_ascii=False)
# result {"Country": "Canada", "Name": "Luke"}

```

## 将 JSON 数据转换为 Python 对象

可以使用`json.loads()`函数将 JSON 数据转换（反序列化）为 Pyhon 对象。 映射表：

| JSON 格式 | 蟒蛇 |
| --- | --- |
| 宾语 | 字典 |
| 数组 | 列表 |
| 串 | 力量 |
| 数字（整数） | 整型 |
| 数字（实数） | 浮动 |
| 真正 | 真正 |
| 假 | 假 |
| 空值 | 没有 |

## 漂亮的打印

如果要显示 JSON 数据，可以使用`json.dumps()`函数。

```py
import json

json_data = '{"name": "Brian", "city": "Seattle"}'
python_obj = json.loads(json_data)
print json.dumps(python_obj, sort_keys=True, indent=4)

```

## 更多

[带有 JSON 数据的 Google 图表](https://pythonspot.com/en/flask-json-and-the-google-charts-api/)