diff --git a/drugstone/views.py b/drugstone/views.py
index 04c0f1fc5fba86683ebdb2b7bde6fac2ac3190cb..c053ff45f4c00efe29df261b511c86bb97071bae 100755
--- a/drugstone/views.py
+++ b/drugstone/views.py
@@ -467,11 +467,6 @@ def graph_export(request) -> Response:
     G = nx.Graph()
     node_map = dict()
     for node in nodes:
-        # drugstone_id is not interesting outside of drugstone
-        # try:
-        #     del node['drugstone_id']
-        # except KeyError:
-        #     pass
         # networkx does not support datatypes such as lists or dicts
         for key in list(node.keys()):
             if isinstance(node[key], list) or isinstance(node[key], dict):
@@ -506,7 +501,23 @@ def graph_export(request) -> Response:
         data = nx.generate_graphml(G)
         response = HttpResponse(data, content_type='application/xml')
     elif fmt == 'json':
-        data = json.dumps(nx.readwrite.json_graph.node_link_data(G))
+        data = nx.readwrite.json_graph.node_link_data(G)
+        del data['graph']
+        del data['multigraph']
+        remove_node_properties = ['color', 'shape', 'border_width', 'group_name', 'border_width_selected', 'shadow',
+                                  'group_id', 'drugstone_type', 'font']
+        remove_edge_properties = ['group_name', 'color', 'dashes', 'shadow', 'id']
+        for node in data['nodes']:
+            for prop in remove_node_properties:
+                if prop in node:
+                    del node[prop]
+        for edge in data['links']:
+            for prop in remove_edge_properties:
+                if prop in edge:
+                    del edge[prop]
+        data["edges"] = data.pop("links")
+        data = json.dumps(data)
+        data = data.replace('"{', '{').replace('}"', '}').replace('"[', '[').replace(']"', ']').replace('\\"', '"')
         response = HttpResponse(data, content_type='application/json')
     elif fmt == 'csv':
         data = pd.DataFrame(nx.to_numpy_array(G), columns=G.nodes(), index=G.nodes())