文章目录
{ .ImgAlt }}

JSON 是一个人类可读的,基于文本的数据格式。

它独立于语言,并且可以在应用之间进行数据交换。

在这篇文章中,我们将会解释在 Python 中如何解析 JSON 数据。

一、Python JSON

json模块是Python 标准库的一部分,它允许你对 JSON 数据进行编码和解码。

JSON 是一个字符串,代表数据。编码或者序列化意味着将一个 Python 对象转换成 JSON 字符串,以便存储到文件中或者通过网络进行传输。解码或者反序列化和编码相反,将 JSON 字符串转换成 Python 对象。

下面是一个表格,表示 Python 对象和 JSOn 对应的数据结构:

Python JSON
dict object
list, tuple array
str string
int, float number
True true
False false
None null

想要处理 JSON,在你文件的顶部简单导入 JSON 模块:

import json

二、在 Python 中编码 JSON

json模块有两个方法用来将 Python 对象编码成 JSON,dump()dumps()

dump() 方法将输出发送到文件中。它有两个参数,用来编码的对象,和文件。下面是一个例子:

data = {
    "country": "Germany",
    "vehicle": {
        "name": "Volkswagen",
        "model": "T-Roc"
    }
}

with open("file.json", "w") as file:
    json.dump(data, file)

如果你运行脚本,这将创建一个名为file.json

{"country": "Germany", "vehicle": {"name": "Volkswagen", "model": "T-Roc"}}

dumps()方法和dump()一样,但是不会将输出发送到文件,而是返回一个字符串:

data = {
    "country": "Germany",
    "vehicle": {
        "name": "Volkswagen",
        "model": "T-Roc"
    }
}

json.dumps(data)

输出:

'{"country": "Germany", "vehicle": {"name": "Volkswagen", "model": "T-Roc"}}'

两个方法都有相同的关键字参数。如果你想调试 JSON 数据,你可能想指定缩进:

data = {
    "country": "Germany",
    "vehicle": {
        "name": "Volkswagen",
        "model": "T-Roc"
    }
}

print(json.dumps(data, indent=2))

输出:

{
  "country": "Germany",
  "vehicle": {
    "name": "Volkswagen",
    "model": "T-Roc"
  }
}

三、在 Python 中解码 JSON

想要将 JSON 数据转换成 Python 对象,使用load()loads()方法。

load()方法从文件中读取 JSON 结构,并转换成 Python 对象。

比如说我们有下面的 JSON 文件:

[
  {
    "userId": 1,
    "id": 1,
    "title": "Meet with Lisa",
    "completed": true
  },
  {
    "userId": 1,
    "id": 2,
    "title": "Design a prototype",
    "completed": false
  }
]

想要将 JSON 数据转换成一个 Python ,你可以像下面一样:

import json

with open('file.json') as f:
  data = json.load(f)

type(data)

这个 JSON 数据被转换成一个 Python 列表,你可以在你的代码中使用它。

输出:

<class 'list'>

loads() 方法将一个JSON 字符串转换成一个 Python 对象:

import json

json_str= '{"userId": "1", "id": "1", "title": "Meet with Lisa", "completed": "True"}'

print(json.loads(json_str))

字符串被转成一个 Python 字典:

{'userId': '1', 'id': '1', 'title': 'Meet with Lisa', 'completed': 'True'}

这是一个更高级的例子,显示如何请求 API,并解码 JSON 数据:

import json
import requests

response = requests.get("https://jsonplaceholder.typicode.com/users")
users = json.loads(response.text)

print(users)

四、总结

我们已经展示了在 Python 中如何编码和解码 JSON 数据。

阿里云: 爆款云服务器低至1折,1核1G 1M 仅17月/月



如果你有任何疑问,请通过以下方式联系我们:

微信:

微信群: 加上面的微信,备注微信群

QQ: 3217680847

QQ 群: 82695646 雪梦科技交流群

原文 :https://linuxize.com/post/python-json/

    版权声明:本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。知识共享许可协议
腾讯云学生服务器_学生机_云服务器优惠套餐-云+校园 - 腾讯云

相关推荐