将 networkx 图表导出到 json 图表文件的方法?

Method to export networkx graph to json graph file?

我有一个 Method to save networkx graph to json graph? 的后续问题,但 Stack Overflow 不允许我在 Sirus 的回答中添加评论,我想澄清一下,所以这是我的问题。

What is the best way to write the JSON data to a text file?

我正在尝试执行一个显而易见的步骤,即编写一个由 NetworkX 生成的 json_graph 文件,以便我可以将其读入 D3.js。我可以毫无问题地将它打印到控制台,因此我可以验证它是否可以创建适当的 JSON 数据。但是我尝试将其保存到文件中的尝试失败了,并且(与 Python 一样)文档基本上毫无价值。这是我尝试过的:

with open('networkdata1.json', 'w') as outfile1:
    outfile1.write(json_graph.node_link_data(G))

它给了我错误: "TypeError: expected a character buffer object" 如果我 运行 使用简单字符串而不是 json 图形的相同代码,那么它可以完美运行。问题在于将 json 对象翻译成文本,我不知道该怎么做,而且我找不到任何包含此步骤的示例。我敢肯定,一旦您知道它就很简单,但是如果您不知道 Python,就很难从在线提供的 material 中弄清楚这些东西。

将 JSON 数据写入文本文件的最佳方法是什么?如果这是正确的方法,还有什么可能导致此问题?

您可能需要先将 json 转储到文本中。在大多数 json 库中,这是通过 .dumps(object).

方法完成的
with open('networkdata1.json', 'w') as outfile1:
    outfile1.write(json_graph.dumps(G))

相反,读入json通常是.loads(text_data)

Jamie 在正确的轨道上,部分答案也在 NetworkX 页面上,将它们结合起来创建了一个可行的解决方案:

with open('networkdata1.json', 'w') as outfile1:
    outfile1.write(json.dumps(json_graph.node_link_data(G)))

事实证明,需要将图形转换为 json_graph,然后将 json 转储为文本,然后将该文本写入文本文件。显然,他们应该在文档中更清楚地包含该步骤,但希望下一个开始走这条路的人可以在这里快速轻松地找到这个简单的解决方案。

确保你有 import jsonimport networkx as nx 才能工作(尽管后者似乎并没有真正出现在这个代码片段中)。