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

从URL导入JSON提示存在多余字符的技术求助

问题诊断与解决方案

你遇到的「多余字符」错误,核心原因是目标URL返回的JSON数据里嵌套了不符合JSON规范的字符串化内容——那些"s"字段的值,是把本该是JSON对象/数组的内容用单引号拼接成了字符串,完全违反了JSON的语法规则(JSON要求键值必须用双引号,对象/数组不能被引号包裹成字符串)。

看你提供的JSON片段就能发现问题:

{"id":{"s":"2"},"managingOrganization":{"s":"{'reference': 'Organization/hl7'}"},"address":{"s":"[{'use': 'home', 'line': ['2222 Home Street']}]"},"name":{"s":"[{'use': 'official', 'family': 'Everyman', 'given': ['Adam']}]"},"t...

比如managingOrganization的s值,是一个用单引号包裹的对象字符串,json.loads()解析时会把单引号判定为非法字符,直接抛出错误。


修复代码示例

我们需要先解析外层合法的JSON,再把嵌套的字符串化内容转换成合法的JSON结构,具体代码如下:

import requests
import json

# 获取原始响应文本
resp = requests.get("https://s3-us-west-2.amazonaws.com/anand-fhir-json/2e3b7aa0-0c90-4b31-8967-680f1438e03e")
outer_data = json.loads(resp.text)

# 遍历处理每个嵌套的字符串化字段
for field_key, field_value in outer_data.items():
    # 只处理包含"s"键的字典类型字段
    if isinstance(field_value, dict) and "s" in field_value:
        raw_str = field_value["s"]
        # 把单引号替换成双引号,符合JSON语法要求
        normalized_str = raw_str.replace("'", '"')
        try:
            # 尝试将字符串解析为JSON对象/数组
            parsed_inner = json.loads(normalized_str)
            outer_data[field_key] = parsed_inner
        except json.JSONDecodeError:
            # 如果是纯字符串(比如id的"2"),直接保留原内容
            outer_data[field_key] = raw_str

# 现在可以正常输出处理后的数据了
print(outer_data)

额外提示

如果这个JSON是你自己生成的,建议从源头优化:直接输出合法的嵌套JSON结构,不要把对象/数组转成带单引号的字符串,这样就能彻底避免这类解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:55:17