如果为false

时间:2017-12-28 12:04:35

标签: c# serialization json.net

我有一个对象:

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的值; enter image description here

然后我接受这个并添加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)后中断,我会得到没有错误值的安全版本(所以甚至在我将其添加到响应之前)

0 个答案:

没有答案