Обход JSON в Python - PullRequest
       5

Обход JSON в Python

2 голосов
/ 09 декабря 2011

Я пытаюсь пройти через каждый узел? объекта JSON в Python. Я пытаюсь реализовать рекурсивную функцию, такую ​​как

def function(data):
         for element in data:
                --- do something----
                if (some condition):
                        function(element)

я хочу знать, как я могу найти, если рассматриваемый элемент является другим объектом или просто строкой. То есть, что я должен написать вместо «некоторого условия» в моем коде выше. Например, когда я путешествую по XML, я проверяю, есть ли у него дочерние элементы, используя getchildren (), и, если это так, я рекурсивно вызываю функцию снова .....

Ответы [ 3 ]

1 голос
/ 09 декабря 2011

Использование type, как правило, не одобряется в Python в пользу более функционального isinstance. Вы также можете тестировать несколько типов одновременно, используя isinstance:

if isinstance(myVar, (list, tuple)):
  # Something here.
1 голос
/ 09 декабря 2011

Хороший питонский способ сделать это может быть что-то вроде этого:

def function(data):
   try:
      for element in data:
         --- do something----
         function(element)
   except TypeError:
      pass

Сделайте вещи и позвольте python вызвать исключение, если вы попытаетесь выполнить итерацию на чем-то, что не повторяется;)

0 голосов
/ 09 декабря 2011

Вы можете использовать функцию 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
...