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

 

posted @   坐听风声雨声  阅读(65)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示