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

Python使用requests库反序列化JSON遇同名键问题求助

解决JSON中重复键的第一个值提取问题

我完全懂你遇到的麻烦——当JSON里存在多个同名键时,默认的json.loads()会直接用后面的键覆盖前面的,不仅拿不到第一个数据块的内容,还可能触发TypeError,确实挺闹心的。不过咱们可以通过修改JSON的解析方式来解决这个问题,而且只需要用Python标准库+requests就能搞定。

核心思路:保留所有键值对的顺序

Python的字典不允许重复键,这是默认解析会覆盖的根本原因。我们可以用json.loads()的object_pairs_hook参数,把JSON对象解析成键值对元组的列表,这样就能完整保留所有键的出现顺序,包括重复的那些。

具体实现代码

假设你的JSON结构是类似这样的(外层是包含多个数据块的数组,每个块都有title键):

[
  {
    "title": "Diego Armando Maradona",
    "artist": "Some Artist"
  },
  {
    "title": "Another Song",
    "artist": "Another Artist"
  }
]

对应的提取代码:

import requests
import json

# 1. 用requests获取JSON内容
response = requests.get("你的目标URL")
response.raise_for_status()  # 确保请求成功

# 2. 解析JSON时保留所有键值对的顺序
# object_pairs_hook=list会把每个JSON对象转成[(key1, value1), (key2, value2)...]的列表
parsed_json = json.loads(response.text, object_pairs_hook=list)

# 3. 提取第一个数据块里的title
first_data_block = parsed_json[0]  # 取数组的第一个元素
target_title = None
for key, value in first_data_block:
    if key == "title":
        target_title = value
        break  # 找到第一个title就停止遍历

print(target_title)  # 输出:Diego Armando Maradona

如果你的JSON是外层有重复的顶级键(比如多个data键),结构类似:

{
  "data": {
    "title": "Diego Armando Maradona",
    "duration": "3:45"
  },
  "data": {
    "title": "Other Song",
    "duration": "2:50"
  }
}

那只需要调整遍历逻辑:

import requests
import json

response = requests.get("你的目标URL")
response.raise_for_status()

parsed_json = json.loads(response.text, object_pairs_hook=list)

# 先找到第一个"data"键对应的内容
first_data_block = None
for key, value in parsed_json:
    if key == "data":
        first_data_block = value
        break

# 再从这个块里提取title
if first_data_block:
    target_title = None
    for k, v in first_data_block:
        if k == "title":
            target_title = v
            break
    print(target_title)

为什么这个方法有效?

  • object_pairs_hook=list告诉JSON解析器,不要把对象转成字典,而是转成包含所有键值对元组的列表,这样就不会丢失重复的键,也能保留它们的出现顺序。
  • 遍历列表时,我们可以精准找到第一个出现的目标键,避免被后面的键覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:12:51