JSON.NET中的JSON.NET NullValueHandling无法按预期工作

时间:2015-03-23 19:17:55

标签: c# json.net

我有一个类似的课程:

[JsonObject]
public class Condition
{
    [JsonProperty(PropertyName = "_id")]
    public string Id { get; set; }

    [JsonProperty(PropertyName = "expressions", NullValueHandling = NullValueHandling.Ignore)]
    public IEnumerable<Expression> Expressions { get; set; }

    [JsonProperty(PropertyName = "logical_operation")]
    [JsonConverter(typeof(StringEnumConverter))]
    public LogicOp? LogicalOperation { get; set; }

    [JsonProperty(PropertyName = "_type")]
    [JsonConverter(typeof(AssessmentExpressionTypeConverter))]
    public ExpressionType Type { get; set; }
}

但是,当Expressions属性为null时,我会像这样序列化对象:

 var serialized = JsonConvert.SerializeObject(condition, Formatting.Indented);

... Json字符串的文本有以下行:

"expressions": null

我的理解是,这不应该发生。我做错了什么?

3 个答案:

答案 0 :(得分:0)

尝试将new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }作为JsonConvert.SerializeObject方法中的第三个参数传递。

答案 1 :(得分:0)

您可以改用[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]

答案 2 :(得分:0)

将此服务添加到Startup.cs上:

services.AddControllersWithViews().AddJsonOptions(options =>
{
    options.JsonSerializerOptions.IgnoreNullValues = true;
});