zoukankan      html  css  js  c++  java
  • C# 序列化时处理NULL

    public class NullToEmptyStringResolver : Newtonsoft.Json.Serialization.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 (_MemberInfo.PropertyType == typeof(string) && result == null) result = "";
    return result;

    }

    public void SetValue(object target, object value)
    {
    _MemberInfo.SetValue(target, value);
    }
    }

    调用方式在Application_Start文件中配置:

    var formatter = GlobalConfiguration.Configuration.Formatters;
    formatter.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
    formatter.Add(GlobalConfiguration.Configuration.Formatters.JsonFormatter);

    //格式化Json中的时间格式
    var timeConverter = new IsoDateTimeConverter
    {
    DateTimeFormat = "yyyy-MM-dd HH:mm:ss"
    };
    formatter.JsonFormatter.SerializerSettings.Converters.Add(timeConverter);
    formatter.JsonFormatter.SerializerSettings.ContractResolver = new NullToEmptyStringResolver();

  • 相关阅读:
    (转).NET 多线程编程
    [WAP]WML学习笔记总结
    [计划]2010年1月的工作学习计划
    [计划]11月&12月学习与工作计划
    [HTTP]HTTP协议学习总结第一弹:RFC2616初读总结
    [培训总结]海量服务培训总结
    [随想]忙碌的2010
    Android电源管理
    Android 1.5: 飞行模式分析
    android JNI 调用
  • 原文地址:https://www.cnblogs.com/morpheusliu/p/8250696.html
Copyright © 2011-2022 走看看