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

Aar*_*son 3 python json networkx

我有一个关于将 networkx 图保存到 json 图的方法的后续问题?,但 Stack Overflow 不允许我在 Sirus 的答案中添加我想澄清的评论,所以这是我的问题。

将 JSON 数据写入文本文件的最佳方法是什么?

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

with open('networkdata1.json', 'w') as outfile1:
    outfile1.write(json_graph.node_link_data(G))
Run Code Online (Sandbox Code Playgroud)

它给了我错误:“TypeError:期望一个字符缓冲区对象”如果我使用简单的字符串而不是 json 图运行相同的代码,那么它可以完美地工作。问题在于将 json 对象转换为文本,我不知道该怎么做,而且我找不到任何包含此步骤的示例。我确信一旦你了解了它就会很简单,但是如果你不了解 Python,那么从网上提供的材料中很难弄清楚这些事情。

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

Aar*_*son 5

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

with open('networkdata1.json', 'w') as outfile1:
    outfile1.write(json.dumps(json_graph.node_link_data(G)))
Run Code Online (Sandbox Code Playgroud)

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

确保您拥有import jsonimport networkx as nx使其能够工作(尽管后者似乎实际上并未出现在此代码片段中)。