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

如何用Python解析JSON文件并提取指定postal_code的long_name值

如何从Geocode JSON结果中提取邮政编码的long_name值

没问题,我来帮你解决这个解析需求。你的目标是从给定的Geocode输出JSON里,定位到types包含"postal_code"的address_components对象,然后提取它的long_name值(也就是"11211")。下面我用两种常用语言给出具体实现方案:

Python 实现

Python处理JSON非常便捷,你可以直接加载JSON数据(不管是字符串还是文件),然后遍历address_components数组找到目标对象:

示例代码(直接使用JSON字符串)

import json

# 你的Geocode输出JSON字符串
json_str = '''
{ 
  "results" : [ 
    { 
      "address_components" : [ 
        { "long_name" : "277", "short_name" : "277", "types" : [ "street_number" ] }, 
        { "long_name" : "Bedford Avenue", "short_name" : "Bedford Ave", "types" : [ "route" ] }, 
        { "long_name" : "Williamsburg", "short_name" : "Williamsburg", "types" : [ "neighborhood", "political" ] }, 
        { "long_name" : "Brooklyn", "short_name" : "Brooklyn", "types" : [ "political", "sublocality", "sublocality_level_1" ] }, 
        { "long_name" : "Kings County", "short_name" : "Kings County", "types" : [ "administrative_area_level_2", "political" ] }, 
        { "long_name" : "New York", "short_name" : "NY", "types" : [ "administrative_area_level_1", "political" ] }, 
        { "long_name" : "United States", "short_name" : "US", "types" : [ "country", "political" ] }, 
        { "long_name" : "11211", "short_name" : "11211", "types" : [ "postal_code" ] } 
      ] 
    } 
  ]
}
'''

# 解析JSON为Python字典
data = json.loads(json_str)

# 遍历address_components,找到postal_code对应的对象
postal_code = None
for component in data['results'][0]['address_components']:
    if 'postal_code' in component['types']:
        postal_code = component['long_name']
        break  # 找到后立即停止遍历,提升效率

# 输出结果(你可以直接返回postal_code这个字符串变量)
print(postal_code)  # 输出: 11211

从JSON文件读取的版本

如果你的数据是存储在geocode_output.json文件里,只需要修改加载数据的部分:

import json

# 从本地JSON文件加载数据
with open('geocode_output.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

# 后续提取逻辑和上面完全一致
postal_code = None
for component in data['results'][0]['address_components']:
    if 'postal_code' in component['types']:
        postal_code = component['long_name']
        break

if postal_code:
    print(f"提取到的邮政编码: {postal_code}")
else:
    print("未找到邮政编码信息")

JavaScript 实现

如果是在前端或者Node.js环境下,你可以用find方法快速定位目标组件:

// 假设你已经获取并解析了JSON数据(比如通过fetch API读取文件或接口返回)
const geocodeData = { 
  "results" : [ 
    { 
      "address_components" : [ 
        { "long_name" : "277", "short_name" : "277", "types" : [ "street_number" ] }, 
        { "long_name" : "Bedford Avenue", "short_name" : "Bedford Ave", "types" : [ "route" ] }, 
        { "long_name" : "Williamsburg", "short_name" : "Williamsburg", "types" : [ "neighborhood", "political" ] }, 
        { "long_name" : "Brooklyn", "short_name" : "Brooklyn", "types" : [ "political", "sublocality", "sublocality_level_1" ] }, 
        { "long_name" : "Kings County", "short_name" : "Kings County", "types" : [ "administrative_area_level_2", "political" ] }, 
        { "long_name" : "New York", "short_name" : "NY", "types" : [ "administrative_area_level_1", "political" ] }, 
        { "long_name" : "United States", "short_name" : "US", "types" : [ "country", "political" ] }, 
        { "long_name" : "11211", "short_name" : "11211", "types" : [ "postal_code" ] } 
      ] 
    } 
  ]
};

// 查找types包含postal_code的组件
const postalComponent = geocodeData.results[0].address_components.find(component => 
  component.types.includes('postal_code')
);

// 提取并使用结果
if (postalComponent) {
  const postalCode = postalComponent.long_name;
  console.log(postalCode); // 输出: 11211
  // 这里可以直接返回postalCode字符串
} else {
  console.log('未找到对应的邮政编码信息');
}

核心逻辑都是一致的:先定位到results数组的第一个元素(通常Geocode结果只有一个匹配项),然后遍历它的address_components数组,找到types包含"postal_code"的对象,最后提取long_name即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:32:57