JsonConvert PreserveReferencesHandling.None not Working

时间:2016-03-09 19:44:35

标签: c#-4.0 json.net

我有一个对象需要序列化并返回到我的javascript。我的目标是这样的:

public class Book
{
    public int Id { get; set; }
    public string Name { get; set; }
    public List<Publisher> AssociatedPublisher { get; set; }
    public List<Publisher> NonAssociatedPublisher { get; set; }
}

如果我将AssociatedPublisherNonAssociatePublisher填入一个,并且列表中的Publisher相同,那么我就

var b = JsonConvert.SerializeObject(book, new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.None });

当我检查var b时,它始终将NonAssociatedPublisher序列化为:

NonAssociatedPublisher
     |
     |-----[0]
            |
            |----$ref: "3"

我想要的是完整的对象,而不仅仅是参考。似乎PreserveReferencesHandling.None不起作用或我误解了它的使用?

1 个答案:

答案 0 :(得分:1)

对不起,我必须回答我自己的问题。问题是AssociatedPublisherNonAssociatedPublisher都来自EF并且标记了它们(IsReference = true)。

我提出的解决方案是为AssociatedPublisherNonAssociatedPublisher创建自己的课程,而不是使用EF中的课程。