在Python中遍历JSON

2 投票
3 回答
4879 浏览
提问于 2025-04-17 08:03

我正在尝试在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会自动抛出一个错误;)

撰写回答