我有一个对象:
public class Feature
{
public string Code { get; set; }
public bool Value { get; set; }
}
我还有另一个具有IEnumerable<Feature>
属性的对象:
public class SomeObject
{
public IEnumerable<Feature> Features { get; set; }
// ..other props
}
我有一个我的对象的实例:
var someObject = new SomeObject {
Features = new List<Feature> {
new Feature { Code = "foo", Value = true },
new Feature { Code = "bar", Value = false }
}
}
当我执行Newtonsoft.Json.JsonConvert.SerializeObject(someObject);
时,它会删除错误的值,例如:
{\"features\":[{\"code\":\"foo\",\"value\":true},{\"code\":\"bar\"}]}
我不想要那个,我想要这个:
{\"features\":[{\"code\":\"foo\",\"value\":true},{\"code\":\"bar\",\"value\":false}]}
我该怎么做?我是否需要在Feature
对象中添加一些属性?或者我可能需要使用不同的Serializer?
更新以回复@Zorkind了解详情。
我从Mongo检索BsonDocument
并执行
MongoDB.Bson.Serialization.BsonSerializer.Deserialize<SomeObject>(resultFromMongo)
这一点看起来有用,我得到了2个功能的对象,两个都包含一个Code和一个值,即使是Value设置为false的值;
然后我接受这个并添加api响应:
var risk = _store.Load(request.Id);
if (risk != null)
{
context.Response.ContentType = ContentType.Json;
await context.Response.WriteAsync(JsonConvert.SerializeObject(risk));
return;
}
上面代码中的risk
是我之前的示例中的SomeObject
实例。
现在如果我在加载风险并在我的即时窗口中执行JsonConvert.SerializeObject(risk)
后中断,我会得到没有错误值的安全版本(所以甚至在我将其添加到响应之前)