我有一个与配置相关的数据模型,要求所有属性都有默认值,以确保正确执行消费操作。
public class Sample {
public List<int> Integers { get; set; }
public Sample() =>
Integers = new List<int> { 1 };
}
此模型应至少包含一个值,因此我们根据预定义的要求指定默认处理值。但是,该值不必特定为1
,如果客户端指定不同的值或多个不同的值,则我们的流程应考虑它们的输入。假设客户端指定要反序列化到模型中的以下json
配置:
{
"integers": [ 2, 3 ]
}
在运行时,我们直接加载配置,但是为了解决这个问题,我们使用一个本地变量string
:
using Newtonsoft.Json
...
string configuration = "{ \"integers\": [ 2, 3 ] }";
var sample = JsonConvert.DeserializeObject<Sample>(configuration);
Console.WriteLine(string.Join(",", sample.Integers));
上述代码片段应生成以下输出:
1,2,3
正如您在下面的截图中所看到的,情况就是这样:
但是,我的问题是为什么...为什么反序列化过程要追加到集合中而不是覆盖它?
1条答案
按热度按时间a6b3iqyw1#
您可以指出如何反序列化json
默认情况下,它是自动的,如果有什么东西,它会尝试添加。