2013-08-28 3 views
-2

я использую Python (Django) с extjs4.2, но теперь я не знаю, как вернуть данные в формате JSON из ExtJS TreePanel нравится ниже:использование питона вернуть JSON данные ExtJS TreePanel

[{ 
    "text":"A", 
    "id": 1, 
    "leaf":false, 
    "parentId":0, 
    "root":4, 
    "children": [{ 
     "text":"A_1", 
     "id":2, 
     "leaf":false, 
     "parentId":1, 
     "root":3, 
     "children": [{ 
      "id":7, 
      "leaf":true, 
      "parentId":2, 
      "root":3, 
      "text":"A_1_1", 
      "children":[] 
     }] 
    }] 
}] 

Пожалуйста, помогите мне, спасибо.

+0

Что у вас? Что вы пробовали? – Fabian

+0

Не могли бы вы уточнить? Откуда у вас эти данные? У вас есть древовидный объект в django, который дает вам эти данные после сериализации? –

+0

Я получаю данные из примера проекта java + extjs4, но я использую python, поэтому ... – user2724512

ответ

1

Структуру дерева довольно легко понять: Это вложенный список узлов, где каждое свойство дочерних узлов является деревом. Его можно представить следующим образом:

class Node(object): 
    def __init__(self, id, text, root='', parent=None): 
     self.text = text 
     self.id = id 
     self.root = root 
     self.parent = parent 
     self.children = [] 

    def append_child(self, node): 
     if node not in self.children: 
      node.parent = self 
      self.children.append(node) 

    def remove_child(self, node): 
     if node in self.children: 
      node.parent = None 
      self.children.remove(node) 

    def parent_id(self): 
     return self.parent.id if self.parent is not None else 0 

    def is_leaf(self): 
     return len(self.children) == 0 

    def to_dict(self): 
     children_dict = [child.to_dict() for child in self.children] 
     return { 
      "id": self.id, 
      "root": self.root, 
      "text": self.text, 
      "leaf": self.is_leaf(), 
      "parentId": self.parent_id(), 
      "children": children_dict, 
     } 

    def to_json(self): 
     return json.dumps(self.to_dict) 
+0

спасибо, я попробую. – user2724512

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