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

如何从多层级JSON对象中提取数据?附示例

嘿,我来帮你搞定这个多层级JSON的数据提取!首先得提一句,你贴的这个格式有点像JSON但不是标准的——标准JSON里键值对用冒号:分隔,元素之间用逗号,,所有键和字符串值都要加双引号。我先把它转成标准JSON格式方便后续操作:

{
  "geometry": {
    "location": {
      "lat": "51.5194133",
      "lng": "-0.1269566"
    }
  },
  "id": "ad6aaec7b7b0fa2c97a127c24845d76135e760ae",
  "place_id": "ChIJB9OTMDIbdkgRp0JWbQGZsS8",
  "reference": "CmRRAAAAiC-ErdlAvz74Drejj2mAAh6Plr46e889a3Uv6CrRXFqNtVatoFsOTarDH0KU8KCkWoN--QGv01RSjLBZblbrAHNPGDVdiXikedid0vKMVM_LQtXstrSQFt4s-Z-Wi-1AEhDJRWc9bdWpKHPPOrt7QGTqGhSJgMPENn_wSGbprGYLv52csv5BtQ"
}

下面我用两种最常用的语言举例子,教你怎么提取需要的数据:

1. Python 提取方法

Python里我们用内置的json模块先把JSON字符串解析成字典,然后通过键名逐层访问就行:

import json

# 把上面的标准JSON存成字符串
json_str = '''
{
  "geometry": {
    "location": {
      "lat": "51.5194133",
      "lng": "-0.1269566"
    }
  },
  "id": "ad6aaec7b7b0fa2c97a127c24845d76135e760ae",
  "place_id": "ChIJB9OTMDIbdkgRp0JWbQGZsS8",
  "reference": "CmRRAAAAiC-ErdlAvz74Drejj2mAAh6Plr46e889a3Uv6CrRXFqNtVatoFsOTarDH0KU8KCkWoN--QGv01RSjLBZblbrAHNPGDVdiXikedid0vKMVM_LQtXstrSQFt4s-Z-Wi-1AEhDJRWc9bdWpKHPPOrt7QGTqGhSJgMPENn_wSGbprGYLv52csv5BtQ"
}
'''

# 解析成Python字典
data = json.loads(json_str)
  • 提取顶级字段(比如place_id、id):
# 直接通过键名访问
place_id = data["place_id"]
id_value = data["id"]

# 怕键不存在报错?用get方法加默认值更安全
place_id_safe = data.get("place_id", "未获取到place_id")
  • 提取嵌套的经纬度:
# 逐层访问嵌套的键
lat = data["geometry"]["location"]["lat"]
lng = data["geometry"]["location"]["lng"]

# 同样用get做安全处理,避免某一层不存在导致报错
lat_safe = data.get("geometry", {}).get("location", {}).get("lat", "未知纬度")
2. JavaScript 提取方法

JavaScript里用JSON.parse()把JSON字符串转成对象,然后通过点语法或者方括号语法访问:

// 标准JSON字符串
const jsonStr = `{
  "geometry": {
    "location": {
      "lat": "51.5194133",
      "lng": "-0.1269566"
    }
  },
  "id": "ad6aaec7b7b0fa2c97a127c24845d76135e760ae",
  "place_id": "ChIJB9OTMDIbdkgRp0JWbQGZsS8",
  "reference": "CmRRAAAAiC-ErdlAvz74Drejj2mAAh6Plr46e889a3Uv6CrRXFqNtVatoFsOTarDH0KU8KCkWoN--QGv01RSjLBZblbrAHNPGDVdiXikedid0vKMVM_LQtXstrSQFt4s-Z-Wi-1AEhDJRWc9bdWpKHPPOrt7QGTqGhSJgMPENn_wSGbprGYLv52csv5BtQ"
}`;

// 解析成JavaScript对象
const data = JSON.parse(jsonStr);
  • 提取顶级字段:
// 点语法更直观
const placeId = data.place_id;
const idValue = data.id;

// 也可以用方括号语法:data["place_id"]
  • 提取嵌套的经纬度:
// 逐层点访问
const lat = data.geometry.location.lat;
const lng = data.geometry.location.lng;

// 怕某一层不存在?用ES2020+的可选链操作符,再加空值合并运算符设默认值
const latSafe = data?.geometry?.location?.lat ?? "未知纬度";

小提示

如果你的原始数据就是那种用=和;的非标准格式,得先转换成标准JSON才能用上面的方法:比如把所有=替换成:,;替换成,,给没加引号的键(比如id、geometry)补上双引号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:48:39