我正在为我的应用程序编写API,并且我已经修改了默认的序列化程序以使用ServiceStack库版本3.9.71。我有两个返回类似数据的端点,但在一种情况下,我想要排除对象的某些属性。这是我使用的对象:
public class Folder
{
public int ID { get; set; }
public string Name { get; set; }
public int? ParentID { get; set; }
public virtual ICollection<Folder> Children { get; set; }
public virtual ICollection<File> Files { get; set; }
}
在一个API端点中,我想返回整个对象,包括子集和文件集合。在另一个方面,我想返回除了子集和文件集之外的所有内容,以减少设置给客户端的数据量。
将[DataContract]与[DatMember]或[IgnoreDataMember]一起使用似乎不起作用,因为这些属性在反序列化过程中似乎被忽略,即使它们包含在JSON中也是如此。
同样,JsConfig.ExcludePropertyNames看起来似乎也可以工作,因为它是一个静态属性,在发送JSON响应之后和下一次调用之前我无法重置列表。 / p>
我还尝试在序列化之前将集合归零,但是对象附加到DbContext,因此它似乎没有任何影响。
无论如何都要返回同一个对象的不同序列化,就像我在尝试?
答案 0 :(得分:1)
重复?
How to omit Get only properties in servicestack json serializer?
但是要回答你的问题,我建议让服务将不需要的属性设置为null,然后再将它返回到响应对象上。我不明白为什么你要附加DbContext的永久引用(假设这是指实体框架),因为DbContext相当短暂,应该像数据库连接一样使用。