c#与Json和背面的多对多关系

问题描述 投票:0回答:1

我需要一些帮助。 Google和Json.net的文档没有帮助。

这些是我的对象:

[JsonObject(IsReference = true)]
public class Member
{
    public int Id { get; set; }
    public string Naam { get; set; }
    public virtual List<Dog> Dogs { get; set; }
}

[JsonObject(IsReference = true)]
public class Dog
{
    public int Id { get; set; }
    public string Naam { get; set; }
    public virtual List<Member> members { get; set; }
}

一只狗可以有多个成员,一个成员可以有多个狗。因此,我为这两个都创建了我的收藏集:

List<Member> members = new List<Member> { new Member { Id = 1, Naam = "James" } };
List<Dog> dogs = new List<Dog> { new Dog { Id = 2, Naam = "Fifi", members = new List<Member> { members[0] } } };
members[0].Dogs = new List<Dog> { dogs[0] };

在这一点上,'members [0] .Dogs'和'dogs [0]'具有相同的引用。

我想将列表保存到json,但保留引用。我试过了:

string jsonMembers = JsonConvert.SerializeObject(members, Formatting.Indented, new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.Objects });
string jsonDogs = JsonConvert.SerializeObject(dogs, Formatting.Indented, new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.Objects });

和返回

members = JsonConvert.DeserializeObject<List<Member>>(jsonMembers, new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.Objects });
dogs = JsonConvert.DeserializeObject<List<Dog>>(jsonDogs, new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.Objects });

如果再次检查'members [0] .Dogs'和'dogs [0]'的相等性,则两者都有不同的引用。反序列化后如何使两者的引用仍然相同?

我需要一些帮助。 Google和Json.net的文档没有帮助。这些是我的对象:[JsonObject(IsReference = true)] public class Member {public int Id {get;组; } ...

c# json many-to-many
1个回答
0
投票

您正在分别对狗和成员进行序列化/反序列化,并且具有两个彼此不相关的JSON字符串。

© www.soinside.com 2019 - 2024. All rights reserved.