Использование anytree для преобразования JSON в изображение - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь использовать anytree, чтобы прочитать файл JSON и экспортировать его как изображение в формате png, используя графическое отображение дерева. Для базового примера, где я создаю узел, он работает.

from anytree import RenderTree
from anytree import Node
from anytree.dotexport import RenderTreeGraph

root = Node("root")
s0 = Node("s0", parent=root)
s1 = Node("s1", parent=root)
t1 = Node("t1", parent=s0)

print(root)
RenderTreeGraph(root).to_picture("test.png")

Image generated by program

Когда я пытаюсь импортировать файл json согласно документам

from anytree.importer import JsonImporter
from anytree import RenderTree
from anytree import Node
from anytree.dotexport import RenderTreeGraph
importer = JsonImporter()
path = open("config.json")

root = importer.read(path)
tree = RenderTree(root)
print(tree)

RenderTreeGraph(tree).to_picture("test.png")

Я получаю следующую ошибку:

Traceback (most recent call last): File "pyth.py", line 20, in <module> DotExporter(tree).to_dotfile("tree.dot") File "/home/user/.local/lib/python3.5/site-packages/anytree/exporter/dotexporter.py", line 214, in to_dotfile for line in self: File "/home/user/.local/lib/python3.5/site-packages/anytree/exporter/dotexporter.py", line 160, in __iter for node in self.__iter_nodes(indent, nodenamefunc, nodeattrfunc): File "/home/user/.local/lib/python3.5/site-packages/anytree/exporter/dotexporter.py", line 174, in __iter_nodes nodename = nodenamefunc(node) File "/home/user/.local/lib/python3.5/site-packages/anytree/exporter/dotexporter.py", line 142, in __default_nodenamefunc return node.name AttributeError: 'RenderTree' object has no attribute 'name'

Передав print(tree) в текстовый файл, передайте JSON в виде текстового блока без форматирования пробелов, где, как и в документах, это нужно делать построчно для захвата древовидной структуры. Похоже, что RenderTree(root) не форматирует JSON в стиле Node первого примера.

Кто-нибудь знает, что происходит не так? Есть ли еще один шаг для правильного разбора JSON?

...