用Python解析JSON数据

JSON是一种人类可读的基于文本的数据格式。 它与语言无关,用于应用程序之间的数据交换。

在本文中,我们将说明如何在Python中解析JSON数据。

Python JSON#

json 允许您编码和解码JSON数据的模块是Python标准库的一部分。

JSON是代表数据的字符串。 编码或序列化意味着将Python对象转换为JSON字符串,可以将其存储在文件中或通过网络传输。 解码或反序列化是将JSON字符串转换为Python对象的反向编码过程。

下表显示了Python对象及其等效的JSON表示形式:

PythonJSONdictobjectlist,tuplearraystrstringint,floatnumberTruetrueFalseFalseNonenull

要使用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

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 dat,则可能需要指定缩进级别:

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文件:

file.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数据。

如果您有任何疑问或反馈,请随时发表评论。

蟒蛇

Sidebar