在Python中遍历JSON
我正在尝试在Python中遍历一个JSON对象的每个“节点”。我想实现一个递归函数,像这样:
def function(data):
for element in data:
--- do something----
if (some condition):
function(element)
我想知道的是,如何判断我正在处理的元素是另一个对象还是一个简单的字符串。也就是说,我在上面的代码中应该把“某个条件”替换成什么。就像我遍历XML时,会使用getchildren()来检查它是否有子节点,如果有的话,我就会再次递归调用这个函数……
3 个回答
0
你可以使用 type(var)
这个函数来检查一个元素是字典还是列表。
def recurse(data):
for element in data:
if type(element) is list or type(element) is dict:
recurse(element)
else:
# do something with element
pass
1
在Python中,使用type
这个方法通常是不太推荐的,大家更喜欢用isinstance
这个方法,因为它更符合函数式编程的风格。你还可以用isinstance
同时检查多个类型:
if isinstance(myVar, (list, tuple)):
# Something here.
1
一个比较符合Python风格的做法可以是这样的:
def function(data):
try:
for element in data:
--- do something----
function(element)
except TypeError:
pass
做你该做的事情,如果你尝试去遍历一些不能被遍历的东西,Python会自动抛出一个错误;)