[英]JSON.NET (WebApi2) - Serialize property, but skip during deserialization
我知道[JsonIgnore]
會完全忽略屬性,我知道ShouldSerializePropertyName
會提供條件序列化,但是我找不到任何東西來標記可以正常序列化為JSON的屬性,但未在反序列化期間設置。
我可以寫一個解決方法:
[JsonIgnore]
public string MyValue{get;set;}
public string MyValueForJson {get{return MyValue;}
但這是不得已的方法。 除了自定義轉換器等以外,還有什么方法可以表示我不希望在反序列化期間填充該字段?
據我了解,您想序列化具有json字符串中所有屬性的對象,但在對該字符串進行反序列化時僅檢索選定的屬性。
如果是這種情況,我有一個類似的要求,即我創建了BaseType和DerivedType類,然后我將派生類型序列化為Json字符串,而反序列化則需要在Base類型實例中進行。 所以寫了這段代碼:
using System.Web.Script.Serialization;
public static TB CastToBase<T, TB>(this T derivedTypeInstance)
{
var serializer = new JavaScriptSerializer();
var baseTypeInstance = serializer.Deserialize<TB>(serializer.Serialize(derivedTypeInstance));
return baseTypeInstance;
}
我認為您可以將[JsonObject(MemberSerialization.OptIn)]屬性放在類上,該屬性要求明確聲明要序列化的屬性。 然后,您可以在要正常進行序列化的屬性上同時使用[JsonProperty]和[JsonIgnore],但在反序列化時忽略。
例:
[JsonObject(MemberSerialization.OptIn)]
private class UserData
{
[JsonProperty]
public string Token { get; set; }
[JsonProperty]
public string Username { get; set; }
[JsonIgnore]
[JsonProperty]
public string Password { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.