如何识别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等其他数据类型的判断
说明
- 去掉了
enumerate(无需索引i),直接遍历items中的每个对象 - 仅判断当前层级值的类型,不深入子字典内部,避免输出子结构内容
- 补充
bool类型判断,匹配期望输出中的enabled is bool
内容的提问来源于stack exchange,提问作者Greencolor
相关产品推荐
相关产品推荐

