我有一个FilterDto
类,用于将过滤器信息发送到客户端应用程序。
例如:
public class FilterDto
{
public string Code { get; set; } = "Default code";
public string Description { get; set; }
}
这被序列化为:
[
{
field: 'Code',
type: 'text',
defaultValue: 'Default code'
},
{
field: 'Description ',
type: 'text',
defaultValue: null
}
]
因此,在我的客户端中,我可以为给定字段渲染两个input
text
。当用户过滤返回的JSON时,就像这样:
{
Code: 'code to filter',
Description: 'description to filter'
}
我将其反序列化为:
var filter = JsonConvert.DeserializeObject(json, typeof(FilterDto));
Console.WriteLine(filter.Code); // code to filter
问题是,如果用户决定删除代码的默认值,在上面的示例中,我将使用JSON:
{
Description: 'description to filter'
}
反序列化时,我将拥有:
var filter = JsonConvert.DeserializeObject(json, typeof(FilterDto));
Console.WriteLine(filter.Code); // Default code
当JSON中缺少Code
时,是否可以将Lasso
设置为null而不是默认值?
谢谢
答案 0 :(得分:2)
尝试一下:
public class FilterDto
{
private const string DefaultValue = "Default code";
[OnDeserialized]
internal void OnDeserializedMethod(StreamingContext context)
{
if (Code == DefaultValue)
{
Code = null; //set to null or string.empty
}
}
public string Code { get; set; } = DefaultValue;
public string Description { get; set; }
}
答案 1 :(得分:0)