簡體   English   中英

如何選擇使用ServiceStack序列化為JSON的字段

[英]How to choose fields that are serialized to JSON with ServiceStack

我正在為我的應用程序編寫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端點中,我想返回整個對象,包括集合Children和Files。 在另一個示例中,我想返回除集合Children和Files之外的所有內容,以減少設置給客戶端的數據量。

將[DataContract]與[DatMember]或僅與[IgnoreDataMember]一起使用似乎在這里不起作用,因為這些屬性在反序列化期間似乎被忽略,即使它們包含在JSON中。

同樣,由於它是靜態屬性,因此JsConfig.ExcludePropertyNames似乎可以正常工作,並且在發送JSON響應之后以及進行下一次調用之前,我無法重置列表。

我還嘗試過在序列化之前使這些集合無效,但是這些對象已附加到DbContext,因此似乎沒有任何影響。

無論如何,有沒有像我嘗試的那樣返回同一對象的不同序列化?

重復?

如何忽略僅在ServiceStack JSON序列化程序中獲取屬性?

但是要回答您的問題,我建議讓服務將不需要的屬性設置為null,然后再將其返回到響應對象。 我不明白為什么您要對DbContext附加永久引用(假設這是指Entity Framework),因為DbContext相當短暫,應該像數據庫連接一樣使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM