Newtonsoft.Json Null 值默认转为 空
Newtonsoft.Json Null 值默认转为 空
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
namespace Logistics.Utils
{
public class NullToEmptyStringResolver :DefaultContractResolver
{
protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
{
return type.GetProperties()
.Select(p => {
var jp = base.CreateProperty(p, memberSerialization);
jp.ValueProvider = new NullToEmptyStringValueProvider(p);
return jp;
}).ToList();
}
}
public class NullToEmptyStringValueProvider : IValueProvider
{
PropertyInfo _MemberInfo;
public NullToEmptyStringValueProvider(PropertyInfo memberInfo)
{
_MemberInfo = memberInfo;
}
public object GetValue(object target)
{
object result = _MemberInfo.GetValue(target);
if (result == null && _MemberInfo.PropertyType.ToString() == "System.String") result = "";
return result;
}
public void SetValue(object target, object value)
{
_MemberInfo.SetValue(target, value);
}
}
}
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Logistics.Utils
{
public class NewtonsoftHelper
{
public static string ToJson<T>(T obj, bool isSet = false)
{
if (obj == null) return null;
if (isSet)
{
var settings = new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,//这种方式指定忽略循环引用,是在指定循环级数后忽略,返回的json数据中还是有部分循环的数据
DateFormatString = "yyyy-MM-dd HH:mm:ss",
//ContractResolver = new CamelCasePropertyNamesContractResolver(),//json中属性开头字母小写的驼峰命名
//NullValueHandling = NullValueHandling.Ignore,//空值处理 忽略序列化
ContractResolver = new NullToEmptyStringResolver(),
};
return JsonConvert.SerializeObject(obj, settings);
}
else {
return JsonConvert.SerializeObject(obj);
}
}
public static T ToObject<T>(string jsonString)
{
if (string.IsNullOrEmpty(jsonString)) return default(T);
return JsonConvert.DeserializeObject<T>(jsonString);
}
}
}
本文来自博客园,作者:VipSoft 转载请注明原文链接:https://www.cnblogs.com/vipsoft/p/18563061