У меня есть графовый объект, который мне нужно сериализовать.Нематериально, какие члены я реализую, метод возвращает {}
string json = new JavascriptSerializer().Serialize(routeGraph);
Вот мой класс графа:
namespace GraphClass
{
[Serializable, DataContract]
public class Graph : ISerializable
{
[DataMember]
readonly Dictionary<string, Node> nodeMap = new Dictionary<string, Node>();
[DataMember]
private Tuple<string, string, double> bufferOriginalOffer;
}
[Serializable, DataContract]
public class Node : ISerializable
{
[DataMember]
public string Name { get; private set; }
[DataMember]
public List<Edge> Adj { get; private set; }
[DataMember]
public Node Prev { get; set; }
[DataMember]
public double Distance { get; set; }
[Serializable, DataContract]
public class Edge : IComparable, ISerializable
{
[DataMember]
public Node Destination { get; private set; }
[DataMember]
public double Cost { get; set; }
[DataMember]
public double Time { get; set; }
}
[Serializable, DataContract]
public class Tuple<T, T1, T2> : ISerializable
{
[DataMember]
public T Item1 { get; set; }
[DataMember]
public T1 Item2 { get; set; }
[DataMember]
public T2 Item3 { get; set; }
}
}
Я пытался целый день, чтобы сериализовать это либоJSON или XML, так как я должен отправить объект в веб-службу.
ОБНОВЛЕНИЕ: Используется вместо DataContractJsonSerialiser
.Я получаю следующую ошибку:
Object graph for type 'GraphClass.Edge' contains cycles and cannot be serialized if reference tracking is disabled.
Как вы можете видеть в классе Node, узел может содержать список ребер.Хотя я не могу исправить ошибку.