JSON.net並想用一種一致的方式來發送和接收數據(文檔)。JSON.Net - 使用JsonIgnoreAttribute只在序列化(但不是deserialzing時),我們使用
我們希望,所有文件的來源是一個基類。基類有一個DocumentType屬性 - 這實質上是類名。
當客戶端發佈此JSON序列化文件到服務器上,我們要反序列化,並確保客戶端指定中,DocumentType服務器上的ExpectedDocumentType匹配。
然後就像這樣,當這個文檔被服務器序列化併發送到客戶端時,我們希望JSON中包含DocumentType屬性 - 技巧是我們希望這個值是ExpectedDocumentType的值。
我試圖做到這一點像這樣...如果JsonProperty和JsonIgnore屬性僅在序列化過程中產生影響,但不是反序列化,但是不幸的是,情況並非如此。
public abstract class JsonDocument
{
/// <summary>
/// The document type that the concrete class expects to be deserialized from.
/// </summary>
//[JsonProperty(PropertyName = "DocumentType")] // We substitute the DocumentType property with this ExpectedDocumentType property when serializing derived types.
public abstract string ExpectedDocumentType { get; }
/// <summary>
/// The actual document type that was provided in the JSON that the concrete class was deserialized from.
/// </summary>
[JsonIgnore] // We ignore this property when serializing derived types and instead use the ExpectedDocumentType property.
public string DocumentType { get; set; }
}
有誰知道如何做到這一點?
本質上邏輯是客戶端可以在反序列化過程中提供任何DocumentType,服務器需要確保這與ExpectedDocumentType匹配,然後在序列化期間服務器將此文檔發送給客戶端時,服務器知道需要的正確DocumentType使用ExpectedDocumentType填充它。
你使用的是WCF嗎?或只是簡單的舊請求到ASHX或ASPX? –
WCF寧靜的WebServices – Tyler