zoukankan      html  css  js  c++  java
  • Mvc4 webApi Json 序列化,日期Java解析失败的解决方法

    在Mvc4 中的Web-Api中,序列化成成的Json字符串,在用FastJson解析的时候会失败掉,因为C#生成的默认是首字母是大写的,fastJson不自持对Key首字母大写的Json解析,还有一个问题就是DateTime使用ISO8601 format时,"yyyy-MM-ddThh:mm:ss.xxx"时没有问题,但变成"yyyy-MM-ddThh:mm:ss.xx"时会失败,

    解决办法

    protected void Application_Start()
    {
    	AreaRegistration.RegisterAllAreas();
    	FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    	RouteConfig.RegisterRoutes(RouteTable.Routes);
    	kernel = new StandardKernel();
    	RegisterServices(kernel);
    	//ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
    	GlobalConfiguration.Configuration.DependencyResolver = new NinjectResolver(kernel);
    	BundleConfig.RegisterBundles(BundleTable.Bundles);
    	Configure(GlobalConfiguration.Configuration);
    }
    
    protected static void Configure(HttpConfiguration config)
    {
    	var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
    	json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
    	json.SerializerSettings.Converters.Add(new JavaScriptDateTimeConverter());
    }
    
    CamelCasePropertyNamesContractResolver 使生成的Json表达式使用驼峰命名方式,首字母小写。http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization

    如果这种方法都无法让你得到满足,那么你可以这么办,继承 DateTimeConverterBase,然后自己实现一个转换器,然后添加到转换列表,其他的类型,可以直接从JsonConverter,然后自己实现。

    如过喜欢在Java端解决,http://code.alibabatech.com/wiki/pages/viewpage.action?pageId=2917070# 只不过是把这边的 SerializeConfig换成ParserConfig。自己实现转换。

    以上方法使用任何一种都可以解决

  • 相关阅读:
    [树形DP]Luogu P1131 [ZJOI2007]时态同步
    [状压DP]JZOJ 1303 骑士
    [DFS]JZOJ 1301 treecut
    [最小费用最大流]JZOJ 4802 探险计划
    [KMP][倍增求LCA]JZOJ 4669 弄提纲
    [DP]JZOJ 1758 过河
    列表生成式和生成器表达式
    协程函数
    生成器
    迭代器
  • 原文地址:https://www.cnblogs.com/warrior/p/2642418.html
Copyright © 2011-2022 走看看