public void WriteJson()

in dotnet/Utils/DirectedGraph.cs [209:248]


        public void WriteJson(JsonWriter jWriter, Dictionary<TNode, int> nodeNumberer, IEnumerable<Action<JsonWriter, Dictionary<TNode, int>>> additionalWriters)
        {
            // Group by edge type
            var edgesByType = new Dictionary<TEdgeLabel, List<(TNode From, TNode To)>>();
            foreach (var edge in Nodes.SelectMany(n => GetOutEdges(n)))
            {
                if (!edgesByType.TryGetValue(edge.Label, out var edgeList))
                {
                    edgeList = new List<(TNode from, TNode to)>();
                    edgesByType.Add(edge.Label, edgeList);
                }
                edgeList.Add((edge.Source, edge.Target));
            }

            jWriter.WriteStartObject();

            jWriter.WritePropertyName("Edges");
            jWriter.WriteStartObject();
            foreach (var (edgeType, edges) in edgesByType)
            {
                jWriter.WritePropertyName(edgeType.ToString());
                jWriter.WriteStartArray();
                foreach (var (From, To) in edges)
                {
                    jWriter.WriteStartArray();
                    WriteNodeJson(jWriter, nodeNumberer, From);
                    WriteNodeJson(jWriter, nodeNumberer, To);
                    jWriter.WriteEndArray();
                }
                jWriter.WriteEndArray();
            }
            jWriter.WriteEndObject();

            foreach (var additionalWriter in additionalWriters)
            {
                additionalWriter(jWriter, nodeNumberer);
            }

            jWriter.WriteEndObject();
        }