我需要一些帮助。 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;组; } ...
您正在分别对狗和成员进行序列化/反序列化,并且具有两个彼此不相关的JSON字符串。