1 @RequestBody 处理类型

在项目中经常看到controller 中有 @RequestBody 字样,他到底有什么作用?

一般使用表单提交数据时不需要使用@RequestBody 即可自动封装数据到对应的 Bean 中。@RequestBody 用来处理Content-Type: application/json, application/xml等

它是通过使用HandlerAdapter 配置的HttpMessageConverters来解析post data body,然后绑定到相应的bean上的。

说明:使用 @RequestBody 解析数据需要添加 jackson 或 fastjson 依赖包。

maven 引入 fastjson 包

<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.</version>
</dependency>

2 对象 和 json 相互转换

在项目中经常会遇到对象和 json 之间相互转换,公共类 和 json 对象转换, 静态内部类 和 json 对象转换

2.1 没有内部类时 Student 类

@Data
public class Student { private String id;
private String name;
private int age;
private String sex;
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}

json 和 对象 相互转换

public static void main(String[] args) throws IOException {
ObjectMapper mapper = new ObjectMapper(); Student student = new Student();
student.setName("good"); String s = mapper.writeValueAsString(student);
System.out.println(s); Student hd2 = mapper.readValue(s, Student.class);
System.out.println(hd2); }

2.2 有静态内部类时 Student 类

@Data
public class Student { private String id;
private String name;
private int age;
private String sex;
private HomeData homeData;
private BigDecimal salary;
private String[] tel; @Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
} @Data
public static class HomeData{
private Address address; @Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
} @Data
public static class Address { private String country;
private String city; @Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}
}
}

json 和 对象 之间相互转换

public static void main(String[] args) throws IOException {
ObjectMapper mapper = new ObjectMapper(); Student student = new Student(); Student.HomeData homeData = new Student.HomeData();
Student.HomeData.Address address = new Student.HomeData.Address();
address.setCountry("中国");
address.setCity("上海");
homeData.setAddress(address);
student.setHomeData(homeData); String s = mapper.writeValueAsString(address);
System.out.println(s); Student.HomeData.Address hd2 = mapper.readValue(s, Student.HomeData.Address.class);
System.out.println(hd2); }

说明:主要方法有 mapper.writeValueAsString 和 mapper.readValue

@RequestBody 处理类型 和 对象 和 json 相互转换的更多相关文章

  1. Object of type 'ListSerializer' is not JSON serializable “listserializer”类型的对象不可JSON序列化

    Object of type 'ListSerializer' is not JSON serializable “listserializer”类型的对象不可JSON序列化 一般原因为 序列化的对象 ...

  2. json相关类库,java对象与json相互转换

    有效选择七个关于Java的JSON开源类库 转自:http://www.open-open.com/lib/view/open1397870197828.html 翻译: (英语原文:http://w ...

  3. Java开发中json使用,各对象与json相互转换

    Json:一种网络通信使用的数据格式,因为便于解析,比较流行,对象可以转为json,同样json也可以转对象. 下面介绍下Json工具的简单使用(fastjson && jackson ...

  4. ObjectMapper 对象和json相互转换

    一.ObjectMapper ObjectMapper类是Jackson库的主要类.它提供一些功能将转换成Java对象匹配JSON结构,反之亦然.它使用JsonParser和JsonGenerator ...

  5. 【Python】python对象与json相互转换

    转自:http://blog.csdn.net/leilba/article/details/50654256 # -*- coding: UTF-8 -*- import json #自定义类 cl ...

  6. 使用jackson对Java对象与JSON字符串相互转换的一些总结

    本文为菠萝大象原创,如要转载请注明出处.http://www.blogjava.net/bolo 代码无真相,为了最简单的说明,我直接上代码. public class User { private  ...

  7. json对象与string相互转换教程

    一.说明 1.1 背景说明 json对象与string相互转换,这东西想写了很多次,但总觉得网上教程比较成熟,所以之前每次都放弃了.但今天又被string转json对象折腾了半天,实在受不了,所以还是 ...

  8. Json.net实现方便的Json转C#(dynamic动态类型)对象

    以前需要将一段json字符串转换为C#对象时,一般都是定义一个与之对应的实体类来接收.这样做有一个很大的缺点,就是当字符串特别长,属性特别多,又有嵌套时,手敲这个实体类就非常痛苦. 比如之前做的一个接 ...

  9. 使用DataContractJsonSerializer类将类型实例序列化为JSON字符串和反序列化为实例对象 分类: JSON 前端 2014-11-10 10:20 97人阅读 评论(1) 收藏

    一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大 ...

随机推荐

  1. 【cocos2dx开发技巧8】自定义控件-使自定义控件具有RGBA特性

    转发,请保持地址:http://blog.csdn.net/stalendp/article/details/9948545 虽然CCNodeRGBA,CCLayerRGBA,sprite等提供颜色和 ...

  2. Android实现Material Design风格的设置页面(滑动开关控件)

    前言 本文链接 http://blog.csdn.net/never_cxb/article/details/50763271 转载请注明出处 參考了这篇文章 Material Design 风格的设 ...

  3. JBOSS启动报错解决方案

    同一个jboss下不可以放不同的项目包,否则报错: 注意:如果后期使用,注意删除上图的本地文件,重新加载即可.

  4. Java从零开始学二十四(集合工具类Collections)

    一.Collections简介 在集合的应用开发中,集合的若干接口和若干个子类是最最常使用的,但是在JDK中提供了一种集合操作的工具类 —— Collections,可以直接通过此类方便的操作集合 二 ...

  5. CSDN日报20170310——《假如我是一行代码》

    [程序人生]假如我是一行代码 作者:henry-hacker 我们不止一次在生活中听到"假如我如何如何,我会如何如何"的句式.而这种句式说出来的一般意义无非就是让我们站在还有一个角 ...

  6. static 和 no static Member function学习

    以下是做实验的一段代码: #include <iostream> using namespace std; typedef void (*p)(); class Object { publ ...

  7. 解决Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom:2.12.4

    Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom:2.12.4 from http://uk.maven.o ...

  8. 【Oracle】(savepoint)保存点的使用

    作用 保存点可以回退到事务的一部分,我们在操作数据库的过程中可以对事务分隔为几个部分,在操作失误的时候就可以回滚到某个点即可. 实现步骤 我们现在新建一张表TMP003 )); 第一步:插入第一条记录 ...

  9. google kaptcha 验证码组件使用简介

    kaptcha 是一个非常实用的验证码生成工具.有了它,你可以生成各种样式的验证码,因为它是可配置的.kaptcha工作的原理是调用 com.google.code.kaptcha.servlet.K ...

  10. 自己写的一个读取execl的帮助类

    目标:读取execl的第一个sheet,并传入不需要读取的表头的行数,返回该execl里所有数据的list 解析共有2种:1.DOM      2.SAX import java.io.File; i ...