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

如何识别JSON中items层级下各嵌套键的数据类型?

问题:识别JSON中items层级下各键的数据类型

我有如下JSON结构(data['_embedded']['items']层级下包含_links、identifier、enabled、family、categories等键),目标是识别该层级下各嵌套键的数据类型。

目前使用的Python代码:

for i, item in enumerate(data['_embedded']['items']):
 for key, values in item.items():
        if isinstance(values, dict):
            print(values, ' is dict')
        elif isinstance(values, list):
            print(values, ' is list')
        elif isinstance(values, str):
            print(values, ' is str')

当前输出结果:

{'self': 'PCR-0006894-SAMKG0-PC'}  is dict
    PCR-0006894-SAMKG0-PC  is str
    products  is str
etc.

期望输出结果:

_links is dict
identifier is str
enabled is bool
family is str
categories is list

尝试将判断条件改为if isinstance(key, dict):后,输出所有类型均为str,与实际不符,寻求正确解决方法。


解决方案

问题出在原代码会递归打印子字典内容,且缺少对bool类型的判断。修正后的代码只需遍历items层级的直接键值对,判断当前值的类型并打印键名和类型即可:

for item in data['_embedded']['items']:
    for key, value in item.items():
        if isinstance(value, dict):
            print(f"{key} is dict")
        elif isinstance(value, list):
            print(f"{key} is list")
        elif isinstance(value, str):
            print(f"{key} is str")
        elif isinstance(value, bool):
            print(f"{key} is bool")
        # 可根据需求添加int、float等其他数据类型的判断

说明

  1. 去掉了enumerate(无需索引i),直接遍历items中的每个对象
  2. 仅判断当前层级值的类型,不深入子字典内部,避免输出子结构内容
  3. 补充bool类型判断,匹配期望输出中的enabled is bool

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:55:18