springMVC利用FastJson接口返回json数据相关配置详解

  

一直使用的是FastJson,感觉还不错,很方便。看了一段别人的分析,觉得很有道理。

  

为什么要使用Fastjson,其实原因不需要太多,喜欢就行。
  

  

我之所以要替换掉杰克逊最主要的原因是杰克逊在处理对象之前的循环嵌套关系时不便。
  

  

ps:什么是对象间的循环嵌套?比如一个有一个列表,B对象里又有一个一个对象,当然返回一个对象的Json字符串时,如果是
  杰克逊就会发生异常,因为杰克逊天生不具备处理这种关系的能力,而Fastjson正好具备了这种能力(另,如果你用的是
  杰克逊,可以使用相应的注解来支持对象间的循环嵌套,具体是什么注解忘了,你可以谷歌一下杰克逊循环嵌套就有很多答案)。
  

  

springMVC使用fastJson很简单,在springMVC的配置文件中作如下配置:

        ' ' '   & lt; !——启用默认配置——比;   & lt; mvc: annotation-driven>   & lt; mvc:消息转换器register-defaults=" true "比;   & lt; !——配置Fastjson支持——比;   & lt; bean类=癱om.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter”比;   & lt;属性名=皊upportedMediaTypes”比;   & lt; list>   & lt; value> text/html; charset=UTF-8   & lt; value>应用程序/json   & lt;/list>   & lt;/property>   & lt;属性名="特性"比;   & lt; list>   & lt; value> WriteMapNullValue   & lt; value> QuoteFieldNames   & lt;/list>   & lt;/property>   & lt;/bean>   & lt;/mvc: message-converters>   & lt;/mvc: annotation-driven>   之前      

别忘了添加Fastjson的包,如果使用Maven,版本可以切换至最新版本,可使用如下设置(强烈建议使用Maven
  

        & lt; dependency>   & lt; groupId> com.alibaba   & lt; artifactId> fastjson   & lt; version> 1.2.7   & lt;/dependency>   之前      

当属性值为空的时候,fastjson默认是不输出的,

        地图& lt;字符串、对象比;jsonMap=new HashMap<字符串,Object> ();   jsonMap.put (" a ", 1);   jsonMap.put (" b ", " ");   jsonMap.put (“c”,零);   jsonMap.put (“d”、“zhenghuasheng”);      字符串str=JSONObject.toJSONString (jsonMap);   System.out.println (str);//输出结果:{“a”: 1、“b”:““d:“zhenghuasheng”}   之前      

从输出结果可以看的出,零对应的关键已经被过滤掉;这明显不是我们想要的结果,这时我们就需要用到fastjson的SerializerFeature序列化属性

  

也就是这个方法:JSONObject。toJSONString(对象对象,SerializerFeature……功能)

  

Fastjson的SerializerFeature序列化属性:

  
      <李> QuoteFieldNames——输出关键时是否使用双引号,默认为真正的李   <李> WriteMapNullValue——是否输出值为零的字段,默认为假李   <李> WriteNullNumberAsZero——数值字段如果为null,输出为0,而非null李   <李> WriteNullListAsEmpty——列表字段如果为null,输出为[],而非null李   <李> WriteNullStringAsEmpty——字符类型字段如果为null,输出为“”,而非零李   <李> WriteNullBooleanAsFalse-Boolean字段如果为null,输出为false,而非null李   
        & lt; !——输出关键时是否使用双引号——比;   & lt; value> QuoteFieldNames   & lt; !——是否输出值为零的字段——比;   & lt; !——& lt; value> WriteMapNullValue</value>——比;   & lt; !——数值字段如果为null,输出为0,而非零——比;   & lt; value> WriteNullNumberAsZero   & lt; !——列表字段如果为null,输出为[],而非零——比;   & lt; value> WriteNullListAsEmpty   & lt; !——字符类型字段如果为null,输出为“”,而非零——比;   & lt; value> WriteNullStringAsEmpty   & lt; !——布尔字段如果为null,输出为false,而非零——比;   & lt; value> WriteNullBooleanAsFalse   & lt; !——空串不输出——比;   & lt; value> WriteNullStringAsEmpty   & lt; !——空行也要输出——比;   & lt; !——& lt; value> WriteMapNullValue</value>——比;      & lt; !——日期的日期转换器——比;   & lt; value> WriteDateUseDateFormat   & lt;/list>   之前      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

springMVC利用FastJson接口返回json数据相关配置详解