Python 程序从 JSON 响应中提取单个值

pythonjsonserver side programmingprogramming

值提取是一种非常流行的编程概念,它用于各种各样的操作。但是,从 JSON 响应 中提取值是一个完全不同的概念。它帮助我们在复杂的数据集中构建逻辑并定位特定值。本文将解释可用于从 JSON 响应中提取单个值的各种方法。在开始值提取之前,让我们先重点了解 JSON 响应的含义。

什么是 JSON 响应?

JSON(JavaScript 对象表示法)响应是一种广泛接受的数据格式,服务器通过该格式响应客户端的请求。每当客户端从服务器请求某些 API 或信息时,都会生成响应并将API传递给客户端。现在,这些信息以客户端和服务器都可以理解的方式共享,为此我们需要统一的数据格式。

JSON 响应以 JSON 对象 的形式共享信息,这些对象可以转换为任何本地编程语言。由于我们使用的是 Python,并且我们的任务是从此响应中检索单个值,因此我们将这些对象转换为字典。现在我们对 JSON 响应有了简要的了解,让我们了解提取部分。

使用 API 从 JSON 响应中提取值

在这种方法中,我们将使用 API 端点从服务器检索数据。首先,我们将导入"requests"库来处理 HTTP 请求。然后,我们将使用"get()"方法向 API 端点发送"GET"请求。在这个例子中,我们将使用"CoinDesk"API 端点来实时获取比特币价格指数 (BPI)。JSON 对象在"json()"方法的帮助下转换为字典。然后解析这些字典以选择特定信息。

在这里,我们将通过访问嵌套对象来提取 BPI 值。字典键引用某些属性和特性,它们的值引用不同的数据类型。我们将使用键来提取单个和多个值。请参阅此链接以获取官方文档 - https://apipheny.io/free-api/

API URL 链接 -https://api.coindesk.com/v1/bpi/currentprice.json

示例

以下是使用"CoinDesk"API 从 JSON 响应中提取单个值的示例 -

import requests

print("Welcome to the live bitcoin Price index")
Json_data = requests.get('https://api.coindesk.com/v1/bpi/currentprice.json').json()

Disclaimer = Json_data["disclaimer"]
print(Disclaimer)

BPI = Json_data["bpi"]["USD"]["rate"]
print(f"The real time BPI value for the United states of America is: {BPI}")

TIME = Json_data["time"]["updated"]
print(f"The index was viewed at Universal time: {TIME}")

输出

Welcome to the live bitcoin Price index
This data was produced from the CoinDesk Bitcoin Price Index (USD). Non-USD currency data converted using hourly conversion rate from openexchangerates.org
The real time BPI value for the United states of America is: 25,978.6344
The index was viewed at Universal time: Jun 11, 2023 18:26:00 UTC

从本地 JSON 文件中提取单个值

此方法侧重于从系统上存储的 JSON 文件中提取单个值。我们首先创建一个 JSON 文件,然后导入 JSON 模块以解码从"JASON 响应"检索到的数据。

此方法类似于文件处理概念,我们加载 JSON 文件,然后以特定模式打开它。我们还可以借助不同的文件模式(如"附加"、"二进制"、"只读"等)更改此文件并操作其内容。我们将使用本地文件 (DSC.json) 来存储与猫相关的信息,我们将从名为"fact"的键中提取此信息。

示例

以下是示例 −

import json

try:
   with open("DSC.json", "r+") as file:
      Json_file = json.load(file)
   FACTS = Json_file["fact"]
   print(f"Here is a fact related to cats: \n{FACTS}")

except:
   print("File does not exist")

输出

Here is a fact related to cats: 
Mountain lions are strong jumpers, thanks to muscular hind legs that are longer than their front legs.

其他见解

我们还可以将"JSON 对象"转储到元素中,然后借助".loads()"方法将其加载到字符串中,从而将 JSON 数据转换为字符串而不是字典。程序员在使用这种值提取概念时最常犯的错误是他们使用错误的键名来访问值。此外,在处理嵌套对象时,我们必须使用正确的顺序进行数据提取。以下是一个例子 -

data = Json_data["Parent object"]["Child object"]

这是提取正确值所遵循的层次结构。

结论

在本文的过程中,我们介绍了值提取的基础知识并了解了其重要性。我们还讨论了"JSON 响应"的机制以及如何从中提取单个值。在第一种方法中,我们使用 API 端点从服务器检索数据。在第二种方法中,我们直接从本地存储的 JSON 文件中提取值。


相关文章