我有一个C#对象,有大约500个属性,其中一些是复杂类型。 Json文档是通过XML导入的,它可以100%运行。我也可以查询集合并成功将Json文档序列化为C#对象。问题是,当我对对象进行更改并使用collection.Save(object);它为所有C#属性创建了Json属性,即使它们是NULL,所以现在我的文档看起来像这样:
{
"_id" : "AA00001",
"Product" : {
"Reference" : "AA00001",
"Type" : "02",
"Code" : null,
"Property 1" : null,
"Property 2" : null,
"Property 3" : null,
.
.
.
}
在C#save
之前,原始文档看起来像这样{
"_id" : "AA00001",
"Product" : {
"Reference" : "AA00001",
"Type" : "02"
.
.
.
有没有办法告诉司机不要保存空/空值?
谢谢。
答案 0 :(得分:1)
您可以通过注册ConventionPack来执行此操作:
var pack = new ConventionPack();
pack.Add(new IgnoreIfNullConvention(true));
ConventionRegistry.Register("ignore nulls",
pack,
t => true);
IgnoreIfNull
将阻止字段序列化。还有一个IgnoreIfDefaultConvention
,它也适用于值类型。
有关如何注册这些内容的详细信息,您可能需要在此处参考another question。