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
标签:obj,处理,propertyName,JsonConvert,NullToEmptyStringConverter,new,Null,public From: https://www.cnblogs.com/bunyip/p/18348313