gpt4 book ai didi

c# - JsonPropertyAttribute 中的 JSON.NET NullValueHandling 未按预期工作

转载 作者:太空宇宙 更新时间:2023-11-03 15:43:40 25 4
gpt4 key购买 nike

我有这样一个类:

[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

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

最佳答案

.net API 使用的默认文本序列化程序是 System.Text.Json:

https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-customize-properties?pivots=dotnet-6-0

所以如果你想忽略 if null 你可以使用:

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]

例子:

public class Forecast
{
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
public DateTime Date { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
public int TemperatureC { get; set; }

[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? Summary { get; set; }
}

关于c# - JsonPropertyAttribute 中的 JSON.NET NullValueHandling 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29218601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com