2011-12-09 2 views
2

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

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

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

ответ

1

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

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

Делайте вещи, и пусть питон сгенерирует исключение, если вы пытаетесь перебирать то, что не повторяется;)

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

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

if isinstance(myVar, (list, tuple)): 
    # Something here. 
+0

Почему? почему недоволен типом? –

Смежные вопросы