我使用
JSON.NET作为我的主序列化程序.
这是我的模型,看看我已经设置了一些JSONProperties和一个DefaultValue.
public class AssignmentContentItem { [JsonProperty("Id")] public string Id { get; set; } [JsonProperty("Qty")] [DefaultValue(1)] public int Quantity { get; set; } }
当我序列化一个List< AssignmentContentItem>,它做一个很好的工作:
private static JsonSerializerSettings s = new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore,NullValueHandling = NullValueHandling.Ignore };
OUTPUT:
[{"Id":"Q0"},{"Id":"Q4"},{"Id":"Q7"}]
但是,当我想反序列化这个jsonContent时,属性Qty始终为0,并且未设置为默认值.我的意思是当我反序列化jsonContent时,因为数量的DefaultValue应该是一个而不是0.
public static List<AssignmentContentItem> DeserializeAssignmentContent(string jsonContent) { return JsonConvert.DeserializeObject<List<AssignmentContentItem>>(jsonContent,s); }
我该怎么办
解决方法
DefaultValue属性不设置属性的值.看到这个问题:
.NET DefaultValue attribute
你可能会做的更好的是在构造函数中设置值:
public class AssignmentContentItem { [JsonProperty("Id")] public string Id { get; set; } [JsonProperty("Qty")] public int Quantity { get; set; } public AssignmentContentItem() { this.Quantity = 1; } }
这一行:
AssignmentContentItem item = JsonConvert.DeserializeObject<AssignmentContentItem>("{\"Id\":\"Q0\"}");