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)