public static  class JsonHelper
{
static JsonHelper()
{
Newtonsoft.Json.JsonSerializerSettings setting = new Newtonsoft.Json.JsonSerializerSettings();
JsonConvert.DefaultSettings = new Func<JsonSerializerSettings>(() =>
{
//日期类型默认格式化处理
setting.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat;
setting.DateFormatString = "yyyy-MM-dd HH:mm:ss"; //空值处理
setting.NullValueHandling = NullValueHandling.Ignore; //高级用法九中的Bool类型转换 设置
//setting.Converters.Add(new BoolConvert("是,否")); if (setting.Converters.FirstOrDefault(p=>p.GetType()==typeof(JsonCustomDoubleConvert))==null)
{
setting.Converters.Add(new JsonCustomDoubleConvert());
} return setting;
});
} public static String ToJsonStr<T>(this T obj) where T : class
{
if (obj == null)
return string.Empty;
return JsonConvert.SerializeObject(obj, Formatting.Indented); }
public static T ToInstance<T>(this String jsonStr) where T : class
{
if (string.IsNullOrEmpty(jsonStr))
return null;
try
{
var instance = JsonConvert.DeserializeObject<T>(jsonStr); return instance;
}
catch
{
return null;
} }
} /// <summary>
/// 自定义数值类型序列化转换器(默认保留3位)
/// </summary>
public class JsonCustomDoubleConvert : CustomCreationConverter<double>
{
/// <summary>
/// 序列化后保留小数位数
/// </summary>
public virtual int Digits { get;private set; } /// <summary>
/// .ctor
/// </summary>
public JsonCustomDoubleConvert()
{
this.Digits = ;
} /// <summary>
/// .ctor
/// </summary>
/// <param name="digits">序列化后保留小数位数</param>
public JsonCustomDoubleConvert(int digits)
{
this.Digits = digits;
} /// <summary>
/// 重载是否可写
/// </summary>
public override bool CanWrite { get { return true; } } /// <summary>
/// 重载创建方法
/// </summary>
/// <param name="objectType"></param>
/// <returns></returns>
public override double Create(Type objectType)
{
return 0.0;
} /// <summary>
/// 重载序列化方法
/// </summary>
/// <param name="writer"></param>
/// <param name="value"></param>
/// <param name="serializer"></param>
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
if (value == null)
{
writer.WriteNull();
}
else
{
var formatter = ((double)value).ToString("N" + Digits.ToString());
writer.WriteValue(formatter);
} }
} /// <summary>
/// 自定义数值类型序列化转换器(无小数位)
/// </summary>
public class JsonCustomDoubleWith0DigitsConvert : JsonCustomDoubleConvert
{
public override int Digits
{
get { return ; }
}
} /// <summary>
/// 自定义数值类型序列化转换器(保留1位)
/// </summary>
public class JsonCustomDoubleWith1DigitsConvert : JsonCustomDoubleConvert
{
public override int Digits
{
get { return ; }
}
} /// <summary>
/// 自定义数值类型序列化转换器(保留2位)
/// </summary>
public class JsonCustomDoubleWith2DigitsConvert : JsonCustomDoubleConvert
{
public override int Digits
{
get { return ; }
}
} /// <summary>
/// 自定义数值类型序列化转换器(保留3位)
/// </summary>
public class JsonCustomDoubleWith3DigitsConvert : JsonCustomDoubleConvert
{
public override int Digits
{
get { return ; }
}
} /// <summary>
/// 自定义数值类型序列化转换器(保留4位)
/// </summary>
public class JsonCustomDoubleWith4DigitsConvert : JsonCustomDoubleConvert
{
public override int Digits
{
get { return ; }
}
} /// <summary>
/// 自定义数值类型序列化转换器(保留5位)
/// </summary>
public class JsonCustomDoubleWith5DigitsConvert : JsonCustomDoubleConvert
{
public override int Digits
{
get { return ; }
}
}
    class Order
{
public int Id { get; set; } public static int OrderId = GetOrderId(); public IEnumerable<int> Missions = null; static int GetOrderId()
{
return new Random().Next(, );
} [JsonConverter(typeof(JsonCustomDoubleWith0DigitsConvert))]
public double OrderAmount { get; set; }
}

最新文章

  1. MATLAB的GUI
  2. git pull提示当前不在某个分支上
  3. Web前端性能优化教程06:减少DNS查找、避免重定向
  4. GreenPlum简单性能测试与分析--续
  5. GridView CheckBox 全选
  6. 异步设备IO 《windows核心编程》第10章学习
  7. 《Journey》风之旅人;
  8. 手把手教你修改pcduino系统默认的音频输出
  9. MYSQL-用户权限的验证过程(转)
  10. Spring读取外部的资源配置文件—@PropertySource和@Value实现资源文件配置
  11. 必应语音API(Bing text to speech API)
  12. SQLServer语言之DDL,DML,DCL,TCL
  13. DevExpress GridControl使用方法总结2
  14. XML(五)dom4j增删改查
  15. GC浅析之三-性能调优经验总结
  16. linux--GCC简单用法
  17. Some_tools
  18. 多播知识by 陈胜君
  19. What does “=&gt;” mean in import in scala?(转自StackOverflow问答)
  20. Template 动画

热门文章

  1. SQL server 2008安装教程
  2. AudioTrack
  3. 使用自定义线程池优化EchoServer
  4. xUtils 源码解析
  5. GUI编程01
  6. 机器人自主移动的秘密:实际应用中,SLAM究竟是如何实现的?(二)
  7. ARC059F
  8. c/c++头文件中#ifndef/#define/#endif的用法
  9. review backpropagation
  10. win7搭建TensorFlow环境