在Python中使用递归函数和结构类型?

时间:2018-09-27 08:51:55

标签: python json

我有一个要使用递归函数进行迭代的json文件,但是如何检查我的json结构是string,array,list还是object?

如果其数组和数组内部有5个对象,如何在python中使用递归函数访问对象?

{{ID:1234,Custid:23456,req:{name:abc,std:2}} {ID:2789,custid:56897}}这是json ...我使用数据加载读取了它< / p>

2 个答案:

答案 0 :(得分:2)

使用递归,然后使用type()isinstance()来决定要做什么。

def handle(x):
    if isinstance(x, dict):
        # do dict stuff
        for key, val in x.items():
            handle(val)
    elif isinstance(x, list):
        # do list stuff
        for val in x:
            handle(val)
    elif isinstance(x, str):
        # do string stuff
        print(x)
    elif isinstance(x, (int, float)):
        # maybe integer, float, etc
        print(x)
    else:
        print("None???")

d = json.loads(json_string)

handle(d)

以上递归实现将处理您的array in arraydict in array等用例

答案 1 :(得分:0)

使用isinstance

s='this is a string (str)'
if isinstance(s,str):
    do something

还可以执行多种操作:

isinstance(s,(str,int))

或者通过检查type来降低效率:

if type(s) is str:
    do something

这可以使用多个,例如:

type(s) in (str,int)

但是在这些解决方案中,我建议使用isinstance

相关问题