Developer
Developer

Reputation: 60

Read graph into NetworkX from JSON file

I have downloaded my Facebook data. I got the data in the form of JSON files.

Now I am trying to read these JSON files into NetworkX. I don't find any function to read graph from JSON file into NetworkX.

In another post, found the info related to reading a graph from JSON, where the JSON file was earlier created from NetworkX using json.dump().

But here in my case I have downloaded the data from Facebook. Is there any function to read graph from JSON file into NetworkX?

Upvotes: 2

Views: 4339

Answers (1)

vurmux
vurmux

Reputation: 10020

Unlike Pandas tables or Numpy arrays, JSON files has no rigid structure so one can't write a function to convert any JSON file to Networkx graph. If you want to construct a graph based on JSON, you should pick all needed info yourself. You can load a file with json.loads function, extract all nodes and edges according to your rules and then put them into your graph with add_nodes_from and add_edges_from functions.

For example Facebook JSON file you can write something like it:

import json
import networkx as nx


with open('fbdata.json') as f:
    json_data = json.loads(f.read())

G = nx.DiGraph()

G.add_nodes_from(
    elem['from']['name']
    for elem in json_data['data']
)
G.add_edges_from(
    (elem['from']['id'], elem['id'])
    for elem in json_data['data']
)

nx.draw(
    G,
    with_labels=True
)

And get this graph:

enter image description here

Upvotes: 3

Related Questions