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

API返回JSON数组内嵌字符串对象的有效性验证与Python解析

问题解答

1. 该JSON是否有效?

是有效的。JSON规范允许数组包含字符串类型元素,只要这些字符串本身是合法的JSON格式(内部特殊字符如双引号已正确转义),整个JSON结构就符合标准。

举个合法的示例结构:

{
  "products": [
    "{\"id\": 1, \"name\": \"Wireless Headphones\"}",
    "{\"id\": 2, \"name\": \"Smart Watch\"}"
  ]
}

2. Python中转换为可访问键值对对象的方法

分两步处理即可:先解析整个API响应为Python字典,再遍历products数组,将每个JSON字符串单独解析为字典。

基础实现代码

import json

# 假设api_response是你从API获取的JSON字符串
api_response = '''
{
  "products": [
    "{\"id\": 1, \"name\": \"Laptop\"}",
    "{\"id\": 2, \"name\": \"Phone\"}"
  ]
}
'''

# 1. 解析整个响应为Python字典
parsed_data = json.loads(api_response)

# 2. 逐个解析products里的JSON字符串
parsed_data['products'] = [json.loads(item) for item in parsed_data['products']]

# 现在可以直接通过键访问数据
for product in parsed_data['products']:
    print(f"产品ID: {product['id']}, 产品名称: {product['name']}")

带异常处理的版本(推荐)

如果API返回的部分字符串可能不符合JSON格式,添加异常处理可避免程序崩溃:

import json

api_response = '''
{
  "products": [
    "{\"id\": 1, \"name\": \"Laptop\"}",
    "invalid-json-string",
    "{\"id\": 2, \"name\": \"Phone\"}"
  ]
}
'''

parsed_data = json.loads(api_response)
processed_products = []

for item in parsed_data['products']:
    try:
        product_dict = json.loads(item)
        processed_products.append(product_dict)
    except json.JSONDecodeError as err:
        print(f"解析失败,跳过无效条目: {err}")

parsed_data['products'] = processed_products

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:54:31