@JSONField使用
参考博客:http://www.cnblogs.com/yucy/p/9057049.html
1.经常遇到这种情况,传过来json的key名和我们javaBean的属性名不一样,导致接收不到:
Child类用来接收传过来的json串:
package com.test.dto; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; public class Child {
private String childName;
private String childAge;
private String chileFather; public String getChildName() {
return childName;
} public void setChildName(String childName) {
this.childName = childName;
} public String getChildAge() {
return childAge;
} public void setChildAge(String childAge) {
this.childAge = childAge;
} public String getChileFather() {
return chileFather;
} public void setChileFather(String chileFather) {
this.chileFather = chileFather;
} @Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}
Controller来接收json串:
发送的json串:

package com.test.controller; import com.test.dto.Child;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; @Controller
public class TestController2 { /**
* jsonField测试
* @param child
*/
@RequestMapping("/testJsonField.do")
public void testJsonField(@RequestBody Child child){
System.out.println(child);
}
}
打印出来,看到是收不到的:
Child[childName=<null>,childAge=<null>,chileFather=<null>]
2.对于这种@RequestBody的使用@JsonProperty将传过来的json key名能够映射到javaBean上:
Child:
package com.test.dto; import com.fasterxml.jackson.annotation.JsonProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; public class Child {
private String childName;
private String childAge;
private String chileFather; public String getChildName() {
return childName;
} @JsonProperty(value = "child_name")
public void setChildName(String childName) {
this.childName = childName;
} public String getChildAge() {
return childAge;
} @JsonProperty(value = "child_age")
public void setChildAge(String childAge) {
this.childAge = childAge;
} public String getChileFather() {
return chileFather;
} public void setChileFather(String chileFather) {
this.chileFather = chileFather;
} @Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}
这样能收到了:
Child[childName=小孩儿,childAge=4,chileFather=<null>]
3.当使用fastjson解析数据时。
1)Child类此时不加任何注解。
2)发送请求:http://localhost:8081/testJsonField.do?childStr={child_name:123, child_age:1}
3)controller接收:

可以看到此时是接受不到的。
4)我们在Child类属性的set方法上加上@JSONField注解,name来匹配json串中的key:
public class Child {
private String childName;
private String childAge;
private String chileFather;
public String getChildName() {
return childName;
}
@JSONField(name="child_name")
public void setChildName(String childName) {
this.childName = childName;
}
public String getChildAge() {
return childAge;
}
@JSONField(name="child_age")
public void setChildAge(String childAge) {
this.childAge = childAge;
}
public String getChileFather() {
return chileFather;
}
public void setChileFather(String chileFather) {
this.chileFather = chileFather;
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}
再次接受就能收到了:

5)使用@JSONField(serialize = false) 在get方法上添加来过滤掉不需要序列化的字段:
Child类:
package com.test.dto; import com.alibaba.fastjson.annotation.JSONField;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; public class Child {
private String childName;
private String childAge;
private String chileFather; public String getChildName() {
return childName;
} @JSONField(name="child_name")
public void setChildName(String childName) {
this.childName = childName;
} public String getChildAge() {
return childAge;
} @JSONField(name="child_age")
public void setChildAge(String childAge) {
this.childAge = childAge;
} @JSONField(serialize = false)
public String getChileFather() {
return chileFather;
} public void setChileFather(String chileFather) {
this.chileFather = chileFather;
} @Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}
我们可以看到childFather字段没有被序列化:

-----
@JSONField使用的更多相关文章
- FastJson中@JSONField注解使用
最近做项目中,使用了json格式在服务器之间进行数据传输.但是发现json格式数据不符合JAVA中的变量定义规则,并且难以理解,因此需要在后台中做二次处理,将数据处理成我们系统中定义的格式. 思路: ...
- Springboot使用alibaba的fastJson,@JSONField不起作用的问题
在Springboot中默认的JSON解析框架是jackson 今天引入alibaba的fastjson,使用@JSONField(serialize=false),让@RestController转 ...
- fastjson的@JSONField注解
@JSONField作用:在字段和方法上1.Field:@JSONField作用在Field时,name可以定义输入key的名字,反序列化的时 值不会赋值到属性上2.作用在setter和getter方 ...
- fastJson注解@JSONField使用的一个实例
1.实体类 package jsonArrayjsonObject.cn; import java.io.Serializable; import java.util.Date; import com ...
- 【源码分析】FastJson全局配置日期格式导致@JSONField(format = "yyyy-MM-dd")注解失效
出现的问题 我全局配置的时间格式是:yyyy-MM-dd HH:mm:ss @JSONField注解配置的时间格式是:yyyy-MM-dd 最终的返回结果是:yyyy-MM-dd HH:mm:ss 问 ...
- @JSONField注解的使用
FastJson中的注解@JSONField,一般作用在get/set方法上面,常用的使用场景有下面三个: 修改和json字符串的字段映射[name] 格式化数据[format] 过滤掉不需要序列化的 ...
- JSONField解决序列化与反序列化字段匹配问题
需求:调用第三方数据,数据格式为Json,并提供一个接口将获取的第三方数据给本公司其他部门调用. 处理流程:第三方Json--反序列化实体--保存到本地数据库--查询数据--序列化Json数据供本公司 ...
- fastjson的@JSONField注解的一点问题
@JSONField 看源码它可以作用于字段和方法上. 引用网上说的, 一.作用Field @JSONField作用在Field时,其name不仅定义了输入key的名称,同时也定义了输出的名称. 但是 ...
- @JsonField 修改json字段属性名称
在前后端分离的开发方式中,经常会遇到后端字段名称和前端字段名称定义不一致的问题,比如,后端定义的Bean中的字段名称为createAt,而前端用的字段名称为createTime.这种情况下可以通过在前 ...
随机推荐
- [转载] Fiddler为所欲为第二篇 像OD一样调试 [二]
首先,如果大家没有看过第一篇,可以先看看第一篇,了解Fiddler script的脚本哦.传送门:https://www.52pojie.cn/thread-854434-1-1.html 导语:其实 ...
- windows下postgreSQL安装与启动
转:https://www.yiibai.com/postgresql/install-postgresql.html https://blog.csdn.net/irainreally/articl ...
- xcfe桌面快捷键整理
转载自:https://my.oschina.net/u/565351/blog/502018 commands custom <Alt>F1:xfce4-popup-applicatio ...
- mysql 创建用户、设置权限
MySQL创建用户与授权 一. 创建用户 命令: CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明: username:你将创建的用 ...
- AI之旅(4):初识逻辑回归
前置知识 求导 知识地图 逻辑回归是用于分类的算法,最小的分类问题是二元分类.猫与狗,好与坏,正常与异常.掌握逻辑回归的重点,是理解S型函数在算法中所发挥的作用,以及相关推导过程. 从一个例子 ...
- ss with kcptun
install ss apt search shadowsocks shadowsocks/kali-rolling,kali-rolling,now 2.9.0-2 all [installed] ...
- ODI Scenario 场景
ODI中,场景的作用类似发布版本,当映射最终修改版完成时,可以生成场景.无论是映射(Mapping)还是包(Package)都可以生成场景. 包调用映射和调用场景的区别: 1,包直接调用映射,当映射修 ...
- poj 3641 快速幂
Description Fermat's theorem states that for any prime number p and for any integer a > 1, ap = a ...
- open-falcon监控nginx
主要逻辑:通过lua nginx module的log_by_lua_file实时记录nginx请求数据,通过外部python脚本定时获取数据解析为Open-Falcon支持的数据类型. Nginx编 ...
- centos6.5-VMware虚拟机-双网卡绑定
1 添加多张网卡(生产环境中有多个卡槽,可用ifconfig查看) 2 编辑两张虚拟机的网卡和物理机的连接方式,这里两张都使用NAT即可 3 打开虚拟机查看所有的网卡(网络接口),修改配置网卡配置文件 ...