Python 如何解析JSON并确定值是集合还是嵌套集合?

Python 如何解析JSON并确定值是集合还是嵌套集合?,python,json,Python,Json,我正在寻找不同的方法来检查JSON中的值 例如,要检查该值是否为: int-isinstance(值,int) 字符串-isinstance(值,str) 数组-isinstance(值、列表) 但是,检查值是list、dict还是字典列表的最干净方法是什么?如何正确区分它们 例子 vs vs 要递归搜索JSON数据结构,并处理项目是列表或字典等集合的情况,可以执行以下操作 示例:递归搜索JSON密钥 另外,一定要利用标准库包。JSON编码和解码的主要功能有: 另见 如果您所

我正在寻找不同的方法来检查JSON中的值

例如,要检查该值是否为:

  • int-
    isinstance(值,int)
  • 字符串-
    isinstance(值,str)
  • 数组-
    isinstance(值、列表)
但是,检查值是
list
dict
还是字典列表的最干净方法是什么?如何正确区分它们

例子 vs

vs


要递归搜索JSON数据结构,并处理项目是列表或字典等集合的情况,可以执行以下操作

示例:递归搜索JSON密钥 另外,一定要利用标准库包。JSON编码和解码的主要功能有:

另见

如果您所追求的是JSON数据模式验证,那么您给出的示例可以由

是(特定类型值的)列表

从goodjson.validators导入gj_all、foreach、is_list、is_string
验证\u fn=gj\u所有(
is_list(),
foreach(is_字符串)
)
验证\u fn(['a','b','c']))
是dict

从goodjson.validators导入foreach\u密钥,是\u dict
验证\u fn=foreach\u键(测试=[is\u dict])
验证({
“测试”:{
“是吗?”:“是”
}
})
是目录列表

从goodjson.validators导入foreach\u键、foreach、is\u dict、is\u列表
验证\u fn=foreach\u键(
试验=[
is_list(),
foreach(是dict)
]
)
验证({
'test':[{'foo':'bar'}]
})

@ChristopherPeisert无法100%确定这与我的要求有何关联。
{
  "test": ["a","b"]
}
{
  "test": {"a":0, "b":1}
}
{
  "test": [
    {"a":0},
    {"b":1}
  ]
}
def find_key(json_input, lookup_key):
    if isinstance(json_input, dict):
        for k, v in json_input.items():
            if k == lookup_key:
                yield v
            else:
                yield from find_key(v, lookup_key)
    elif isinstance(json_input, list):
        for item in json_input:
            yield from find_key(item, lookup_key)