2012-11-22 76 views
2

我有一個networkx圖,我想通過使用json格式的連接發送一個節點(包括它的屬性)。我知道如何序列全圖:如何將networkx(python)節點序列化爲json格式?

import networkx as nx 
from networkx.readwrite import json_graph 
G=nx.Graph() 
G.add_node(1) 
G.node[1]["name"]="alice" 
G.add_node(2) 
G.add_edge(1,2) 
print json.dumps(json_graph.node_link_data(G)) 

但是,我沒有找到一個方法來序列化一個單節點,像

print json.dumps(json_graph.node_data(G.node[1])) 

有沒有辦法來實現這一目標?

+0

在我看來,這是可行的。當您嘗試傳送這些數據時,您是否遇到錯誤? – inspectorG4dget

回答

2

您可以調用節點上的json.dumps()或(節點,數據)的元組。 同樣可以用於邊緣。例如:

In [1]: import networkx as nx 

In [2]: G=nx.Graph() 

In [3]: G.add_node(1,color='red',size=75) 

In [4]: G.add_node(2,color='blue',size=33) 

In [5]: import json 

In [6]: json.dumps(G.nodes(data=True)) # all nodes 
Out[6]: '[[1, {"color": "red", "size": 75}], [2, {"color": "blue", "size": 33}]]' 

In [7]: json.dumps((1,G.node[1])) # (node, data) tuple 
Out[7]: '[1, {"color": "red", "size": 75}]'