首页 > 其他分享 >SpringMVC 3使用Fastjson代替Jackson

SpringMVC 3使用Fastjson代替Jackson

时间:2023-06-04 17:06:12浏览次数:45  
标签:Fastjson Jackson name SpringMVC id group public String


[size=large][color=red]Json解析教程(四.FastJson 的使用)[/color][/size]
[url]http://zyjustin9.iteye.com/blog/2020533[/url]


1. [代码][Java]代码

public class User {
    private Long id;
    private String name;

    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
}


2. [代码][Java]代码


public class Group {
    private Long id;
    private String name;
    private List<User> users = new ArrayList<User>();

    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }

    public List<User> getUsers() { return users; }
    public void setUsers(List<User> users) { this.users = users; }
}


3. [代码]编码


import com.alibaba.fastjson.JSON;

Group group = new Group();
group.setId(0L);
group.setName("admin");

User guestUser = new User();
guestUser.setId(2L);
guestUser.setName("guest");

User rootUser = new User();
rootUser.setId(3L);
rootUser.setName("root");

group.getUsers().add(guestUser);
group.getUsers().add(rootUser);

String jsonString = JSON.toJSONString(group);

System.out.println(jsonString);


4. [代码]输出结果


{
      "name":"admin",
      "id":0,"users":[
                             {"name":"guest","id":2},
                             {"name":"root","id":3}
                         ]
}


5. [代码]解码


Group group2 = JSON.parseObject(jsonString, Group.class);






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


[color=red]我之所以要替换掉Jackson最主要的原因是Jackson在处理对象之前的循环嵌套关系时不便。


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


要使用Fastjson很简单,在spring-servler.xml(SpringMVC的配置文件)中将Jackson的配置去掉,换上下面的配置:



<!-- 启用默认配置 -->
    <mvc:annotation-driven>
        <mvc:message-converters register-defaults="true">
            <!-- 配置Fastjson支持 -->
            <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>WriteMapNullValue</value>
                        <value>QuoteFieldNames</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>


别忘了添加Fastjson的包,如果使用Maven,可使用如下设置(强烈建议使用Maven来管理你的项目):



<!-- Alibaba Fastjson框架 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.39</version>
</dependency>

标签:Fastjson,Jackson,name,SpringMVC,id,group,public,String
From: https://blog.51cto.com/u_3871599/6411073

相关文章

  • SpringMVC 转换ajax的json数据乱码问题
    在springmvc3中,已经集成了Jackson(json处理器)来处理数据输出json格式,spring中封装的类是[color=blue]org.springframework.http.converter.json.MappingJackson2HttpMessageConverter[/color]这个json转换器,如果是[color=red]springmvc3.2[/color]之前的版本,可以使用[color=b......
  • SpringMVC3.2.x + Hibernate4.2.x + ecache + Spring Security 3.0.5
    这只是部分代码,一些代码可以参考:[url]http://panyongzheng.iteye.com/blog/1871418[/url]SpringSecurity3.1最新配置实例[url它自带的附件也上传。SpringSecurity3十五日研究[url]http://www.blogjava.net/SpartaYew/archive/2013/09/23/350630.html[/......
  • 【整套视频】spring / springmvc+mybatis
    Spring常用注解redis视频集合,看完这些别说不会redisday88-js对象.rarday87-项目部署和面试指导10.rarday86-订单流程09.rarday85-购物车和订单提交08.rarday84-单品页查询静态化07.rarday83-用户登录和个人中心06.rarday82-商品审核上架和首页筛选05.rarday81-商品添加04.rarday80-......
  • 《面试1v1》SpringMVC
    我是javapub,一名Markdown程序员从......
  • springmvc实现
    一、实现方式①基于xml②基于注解二、配置springmvc1、配置web.xml的servlet的转发类点击查看代码<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSc......
  • SpringMVC大文件分片上传/多线程上传
    ​ javaweb上传文件上传文件的jsp中的部分上传文件同样可以使用form表单向后端发请求,也可以使用ajax向后端发请求    1.通过form表单向后端发送请求         <formid="postForm"action="${pageContext.request.contextPath}/UploadServlet"method="post"e......
  • FastJson转Java对像字段不区分大小写
    昨天遇到参数key大小写不一致导致校验签名失败的问题,查了很长时间才找到原因。看了一下FastJson源码,发现JSON.toObject中转换成对象的时候会忽略大小写。所以,当使用了JSON.toObject将json转成Java对象后,再用JSON.toObject转成json,key值就变了。写个方法验证一下:publicclassPe......
  • springMVC的controller中获取request,response对象的两个方法
    @GetMapping("outLogin")publicStringoutLogin(){ServletRequestAttributesattributes=(ServletRequestAttributes)RequestContextHolder.getRequestAttributes();HttpServletRequestrequest=attributes.getRequest();......
  • 使用SpringMVC搭建第一个项目
    概述使用SpringMVC搭建第一个项目,入门教程,分享给大家。详细一、概述1、什么是SpringMVC?SpringMVC属于SpringFrameWork的后续产品,已经融合在SpringWebFlow里面。Spring框架提供了构建Web应用程序的全功能MVC模块。使用Spring可插入的MVC架构,从而在使用Sp......
  • [SprigMVC/SpringBoot] JSON序列化专题之日期序列化问题:接口报Jackson框架错误“Inva
    0序言今日工作中遇到的一个bug。各位看官且听我娓娓道来。1问题描述请求接口时,service层返回到controller层的数据结构为List<Map<Strig,Object>>,而Map中存在一个key=date,valuetype=java.time.LocalDate的Entry,且日志报如下错误:InvalidDefinitionException:Java8date......