首页 > 文章列表 > Python程序从JSON响应中提取单个值

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

Python json 提取
375 2023-09-08

值提取是一个非常流行的编程概念,它被用于各种各样的操作中。然而,从 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 数据转换为字符串而不是字典,方法是将“JSON 对象”转储到元素中,然后借助“.JSON”将其加载到字符串中。 load()”方法。程序员在使用值提取概念时最常犯的错误是他们使用错误的键名称来访问值。此外,在处理嵌套对象时,我们必须使用正确的顺序来提取数据。以下是一个示例 –

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

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

结论

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