>我有一个对象需要序列化并返回到我的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; }
}
如果我用一个填充AssociatedPublisher
和NonAssociatePublisher
,并且在列表中使用相同的Publisher
,那么我会这样做
var b = JsonConvert.SerializeObject(book, new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.None });
当我检查var b
它总是将NonAssociatedPublisher
序列化为:
NonAssociatedPublisher
|
|-----[0]
|
|----$ref: "3"
我想要的是完整的对象,而不仅仅是引用。似乎 PreserveReferencesHandling.None 不起作用,或者我误解了它的用法?
抱歉我必须回答我自己的问题。问题是AssociatedPublisher
和NonAssociatedPublisher
都来自 EF 并且它们被标记 (IsReference=true)。
我想出的解决方案是为AssociatedPublisher
和NonAssociatedPublisher
创建自己的类,而不是使用 EF 中的类。