You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从HTTP请求返回的JSON响应中提取特定数据

如何从给定的JSON响应中提取特定数据?

嘿,我来帮你搞定这个JSON数据提取的问题!先看你的响应结构:这是一个包含单个设备数据对象的数组,所以咱们分步骤来挖你需要的特定字段就行。

通用思路

不管用哪种编程语言,核心步骤都是这三步:

  • 把JSON格式的字符串解析成编程语言能识别的数据结构(比如Python里的列表/字典,JavaScript里的数组/对象)
  • 定位到目标数据的层级:你的响应是数组,所以先取数组的第一个元素(索引为0)
  • 根据字段名直接取值,嵌套字段就逐层访问(比如attributes里的batteryLevel,需要先拿到attributes对象再取对应字段)

Python 实现示例

Python自带json模块,不用额外安装,直接用就行:

import json

# 假设你从API拿到的JSON响应存在这个字符串里
json_response = '[{"id":23908,"attributes":{"batteryLevel":69.0,"distance":0.29,"totalDistance":74804.18,"motion":false}, "deviceId":5,"type":null,"protocol":"osmand", "serverTime":"2018-04-18T12:08:02.814+0000", "deviceTime":"2018-04-18T12:08:06.000+0000", "fixTime":"2018-04-18T12:08:06.000+0000", "outdated":false, "valid":true,"latitude":12.79057744,"longitude":77.85007493,"altitude":771.0, "speed":0.0,"course":0.0}]'

# 解析JSON字符串为Python列表
parsed_data = json.loads(json_response)

# 取数组中的第一个设备数据对象
device_info = parsed_data[0]

# 提取基础字段
device_id = device_info["deviceId"]
latitude = device_info["latitude"]
server_time = device_info["serverTime"]

# 提取嵌套在attributes里的字段
battery_level = device_info["attributes"]["batteryLevel"]
total_distance = device_info["attributes"]["totalDistance"]
is_moving = device_info["attributes"]["motion"]

# 打印提取结果
print(f"设备ID: {device_id}")
print(f"当前电量: {battery_level}%")
print(f"总行驶里程: {total_distance} 米")
print(f"是否处于移动状态: {is_moving}")

JavaScript 实现示例

不管是浏览器环境还是Node.js,都可以用原生的JSON.parse()方法:

// 假设从API获取到的JSON响应字符串
const jsonResponse = '[{"id":23908,"attributes":{"batteryLevel":69.0,"distance":0.29,"totalDistance":74804.18,"motion":false}, "deviceId":5,"type":null,"protocol":"osmand", "serverTime":"2018-04-18T12:08:02.814+0000", "deviceTime":"2018-04-18T12:08:06.000+0000", "fixTime":"2018-04-18T12:08:06.000+0000", "outdated":false, "valid":true,"latitude":12.79057744,"longitude":77.85007493,"altitude":771.0, "speed":0.0,"course":0.0}]';

// 解析为JavaScript数组
const parsedData = JSON.parse(jsonResponse);

// 获取第一个设备数据对象
const deviceInfo = parsedData[0];

// 提取基础字段
const deviceId = deviceInfo.deviceId;
const longitude = deviceInfo.longitude;
const fixTime = deviceInfo.fixTime;

// 提取嵌套字段
const speed = deviceInfo.speed;
const altitude = deviceInfo.altitude;
const isMoving = deviceInfo.attributes.motion;

// 输出结果
console.log(`设备ID: ${deviceId}`);
console.log(`当前速度: ${speed} m/s`);
console.log(`海拔高度: ${altitude} 米`);
console.log(`是否移动: ${isMoving}`);

关键注意事项

  • JSON是大小写敏感的,字段名必须完全匹配,比如deviceId不能写成deviceid或者DeviceID
  • 如果某些字段可能不存在(比如type是null),建议做容错处理:
    • Python可以用device_info.get("attributes", {}).get("batteryLevel", "未知"),避免KeyError
    • JavaScript可以用可选链操作符:deviceInfo.attributes?.batteryLevel ?? '未知'
  • 如果API返回的是多个设备的数组,只需要用循环遍历每个元素,重复提取逻辑即可

内容的提问来源于stack exchange,提问作者Deepika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:42:50