我正在尝试解析json以找到所需键的值。我这样做是递归的。如果有另一种更快或更有效的方法,我是开放的
json示例:
{
"data_version":"5",
"application":{
"platform":"iPhone",
"os":"iPhone OS",
"locale":"en_US",
"app_version":"unknown",
"mobile":{
"device":"iPhone",
"carrier":"Verizon",
}
},
"event_header":{
"accept_language":"en-us",
"topic_name":"mobile-clickstream",
"server_timestamp":1416958459572,
"version":"1.0"
},
"session":{
"properties":{
}
},
"event":{
"timestamp":1416958459185,
"properties":{
"event_sequence_number":97
}
}
}
这是我到目前为止的情况
^{pr2}$预期产量:
>>> json_scan(json_obj, "timestamp")
1416958459185
通过调试器时,我能够找到所需的值,但是result = None
行将result重置为None
,在方法的末尾,我得到的值是None
。我不知道怎么解决这个问题。我试图移除预设值,但我没有尝试移除结果行。在
问题是没有将递归调用分配给result:
另一个问题是你的扫描对列表不起作用-
json_obj[element]
只对dicts有效-但是由于你的数据没有列表,所以它现在可以工作。您应该完全删除列表处理(除非您确实有列表,否则算法需要更改)。在使用json库来解析json文件(应删除一些逗号),并使用本机dict类型:
更完整的版本:
^{pr2}$编辑(2015/04/25):
在看了@PyCon 2015视频后,我遇到了dict_digger:
http://jtushman.github.io/blog/2013/11/06/dict-digger/https://github.com/jtushman/dict_digger
有测试。。。在
您应该从if语句内部返回结果。所以,你的代码应该是:
这样,如果找到结果,它将立即返回,而不是重置为“无”。如果找不到它,它最后仍然不会返回任何结果。在
相关问题 更多 >
编程相关推荐