JsonConvert中处理Null值问题
1.定义一个类 NullToEmptyStringConverter 继承 JsonConverter
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
public class NullToEmptyStringConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return true; // 可以应用于任何类型
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null)
{
return ""; // 将null转换为空字符串
}
JToken token = JToken.Load(reader);
return token.ToObject(objectType, serializer);
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException(); // 只实现读取逻辑
}
}
2. 第二步有两种实现
第一种 通过在属性上添加特性
public class MyClass
{
[JsonProperty("propertyName")]
[JsonConverter(typeof(NullToEmptyStringConverter))]
public string PropertyName { get; set; }
}
string json = "{\"propertyName\": null}"; // JSON字符串,其中propertyName的值为null
MyClass obj = JsonConvert.DeserializeObject<MyClass>(json);
Console.WriteLine(obj.PropertyName); // 输出结果为空字符串
第二种 在使用 JsonConvert.DeserializeObjec 时指定一个 JsonSerializerSettings
JsonSerializerSettings settings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
Converters = new List<JsonConverter> { new NullToEmptyStringConverter() }
};
string json = "{\"propertyName\": null}"; // JSON字符串,其中propertyName的值为null
MyClass obj = JsonConvert.DeserializeObject<MyClass>(json,settings);
Console.WriteLine(obj.PropertyName); // 输出结果为空字符串
————————————————
第一种转载 讯飞星火大模型
第二种转载 凌霄玉阶非所愿
原文链接:https://blog.csdn.net/weixin_42064877/article/details/130447975
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)