Python 如何自动提取嵌套json,其中很少有json对象嵌套json对象,但可以使用_dict解析__

Python 如何自动提取嵌套json,其中很少有json对象嵌套json对象,但可以使用_dict解析__,python,json,nested,Python,Json,Nested,对象如下所示 { "id":1, "image":"path/to/image", "employee_data":<sql_alcahmy_object>, } 下面的方法将用于从sql alchemy对象提取所有数据 sql炼金术对象__ 下面是计划好的递归方法,但没有成功 def extract_recursive(deepvalue,alldata={}): 对于每个HKEY,每个值都在deepvalue中。\u dict\u.iteritems() 如果hasattr

对象如下所示


{
"id":1,
"image":"path/to/image",
"employee_data":<sql_alcahmy_object>,
}
下面的方法将用于从sql alchemy对象提取所有数据

sql炼金术对象__ 下面是计划好的递归方法,但没有成功

def extract_recursive(deepvalue,alldata={}):
对于每个HKEY,每个值都在deepvalue中。\u dict\u.iteritems()
如果hasattr(每个值,“\uuuu dict””):
update({eachkey:extract\u recursive(eachvalue)})
其他:
更新({eachkey:eachvalue})
打印(所有数据)
预期产量


{
"id":1,
"image":"path/to/image",
"employee_data":{
             "employee_previous":{"company":"xyz","years":10},
             "employee_salary":"1$",

              }
}
deepvalue和sql_alcahmy_对象中的可用方法如下

“UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU","大小","结构","子类钩子","表格","表格名","weakref","decl类注册","sau类经理","年龄"

对这里的内容存在误解

事实上是这样

用于存储对象(可写)属性的字典或其他映射对象

但它不允许访问dict的嵌套dict

因此,如果您想迭代dict中的项,只需调用
thedict.iteritems()
而不是
thedict.\uu dict\uuuu.iteritems()

然后,如果要检查变量是否包含
dict
实例,请使用
isinstance(a_dict,dict)
,而不是
hasattr(a_dict,'._dict'.'

此外,使用可变对象作为函数参数的默认值可能会产生非直观的结果,强烈建议不要使用(请参阅) 相反,您可能应该将
None
作为默认值传递,并在函数开头添加
alldata=alldata或{}

最后,虽然我不理解您的函数的要点,但此版本应能更好地工作:

def extract_recursive(deepvalue, alldata=None):
    alldata = alldata or {}
    for eachkey, eachvalue in deepvalue.iteritems():
        if isinstance(eachvalue, dict):
            alldata.update({eachkey:extract_recursive(eachvalue)})
        else:
            alldata.update({eachkey:eachvalue})
    print(alldata)

这里没有任何问题,只有一系列的陈述。你到底在问什么?你面临什么问题?但这里的问题是我没有deepvalue。iteritems(),我只能通过deepvalue dict.iteritems()@Harish:那些“sql炼金术对象”是什么类型的它的类对象没有iteritems方法和模型是由其他人编写的,因此我无权change@Harish:如果没有详细信息,很难提供帮助。返回的
type()是什么
?如果它是标准类型,我们可能会帮助您。它是自定义类型,您无法共享代码,您仍然可以使用
dir()
检查它,以查找合适的属性。。。

{
"id":1,
"image":"path/to/image",
"employee_data":{
             "employee_previous":{"company":"xyz","years":10},
             "employee_salary":"1$",

              }
}
def extract_recursive(deepvalue, alldata=None):
    alldata = alldata or {}
    for eachkey, eachvalue in deepvalue.iteritems():
        if isinstance(eachvalue, dict):
            alldata.update({eachkey:extract_recursive(eachvalue)})
        else:
            alldata.update({eachkey:eachvalue})
    print(alldata)