logo头像

学习java,共同进步

FastJson使用,与springMvc整合

FastJson常用的API

Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。
//  public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray 
//  public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject    
//  public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean 
//  public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 
//  public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 
//  public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 
//  public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 
//  public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray(和上面方法的区别是返回值是不一样的)

Spring 集成fastjson库

spring 中默认不支持fastjson api直接将java对象转换为json串,假如需要使用
fastjson 实现对象的转换,现阶段我们需要手动进行转换。

项目中添加fastjson依赖

<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>fastjson</artifactId>
  <version>1.2.38</version>
 </dependency>

创建controller,例如ResponseController,然后在类中添加相关方法,手动将java对象转换为json串。

@RequestMapping("doFastMap")
@ResponseBody
public String doFastMap(){
    Map<String,Object> map=
            new HashMap<>();
    map.put("id", 100);
    map.put("name", "AAA");
    return JSON.toJSONString(map);
}//{"name":"AAA","id":100}

springMvc整合fastjson只需要在消息解析器里面配置下

<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
    <mvc:annotation-driven>
        <mvc:message-converters register-defaults="true">
            <!-- 配置Fastjson 替换原来的jackson支持 -->
            <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/html;charset=UTF-8</value>
                        <value>application/json</value>
                    </list>
                </property>
                <!--下面这段可以不配置-->
                <property name="features">
                    <list>

                        <value>QuoteFieldNames</value> <!-- 输出key时是否使用双引号,默认为true -->
                        <value>WriteMapNullValue</value>  <!-- 是否输出值为null的字段,默认为false -->

                        <!-- 
                        <value>DisableCircularReferenceDetect</value>
                        <value>WriteDateUseDateFormat</value> 
                        <value>WriteNullStringAsEmpty</value>  字符类型字段如果为null,输出为"",而非null 
                        <value>WriteNullNumberAsZero</value>  数值字段如果为null,输出为0,而非null 
                        <value>WriteNullBooleanAsFalse</value>  Boolean字段如果为null,输出为false,而非null 
                        <value>WriteNullListAsEmpty</value>    List字段如果为null,输出为[],而非null
                        -->

                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者