java jsonfield_@JSONField使用[通俗易懂]

参考博客:http://www.cnblogs.com/yucy/p/9057049.html1.经常遇到这种情况,传过来json的key名和我们javaBean的属性名不一样,导致接收不到:Child类用来接收传过来的json串:packagecom.test.dto;importorg.apache.commons.lang3.builder.ToStringBuilder;importorg…

大家好,又见面了,我是你们的朋友全栈君。

参考博客:http://www.cnblogs.com/yucy/p/9057049.html

1.经常遇到这种情况,传过来json的key名和我们javaBean的属性名不一样,导致接收不到:

Child类用来接收传过来的json串:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.test.dto;importorg.apache.commons.lang3.builder.ToStringBuilder;importorg.apache.commons.lang3.builder.ToStringStyle;public classChild {privateString childName;privateString childAge;privateString chileFather;publicString getChildName() {returnchildName;

}public voidsetChildName(String childName) {this.childName =childName;

}publicString getChildAge() {returnchildAge;

}public voidsetChildAge(String childAge) {this.childAge =childAge;

}publicString getChileFather() {returnchileFather;

}public voidsetChileFather(String chileFather) {this.chileFather =chileFather;

}

@OverridepublicString toString() {return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);

}

}

View Code

Controller来接收json串:

发送的json串:

8e768dc8eb89828b87945e674c63d089.png

packagecom.test.controller;importcom.test.dto.Child;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestBody;importorg.springframework.web.bind.annotation.RequestMapping;

@Controllerpublic classTestController2 {/*** jsonField测试

*@paramchild*/@RequestMapping(“/testJsonField.do”)public voidtestJsonField(@RequestBody Child child){

System.out.println(child);

}

}

打印出来,看到是收不到的:

Child[childName=,childAge=,chileFather=]

2.对于这种@RequestBody的使用@JsonProperty将传过来的json key名能够映射到javaBean上:

Child:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.test.dto;importcom.fasterxml.jackson.annotation.JsonProperty;importorg.apache.commons.lang3.builder.ToStringBuilder;importorg.apache.commons.lang3.builder.ToStringStyle;public classChild {privateString childName;privateString childAge;privateString chileFather;publicString getChildName() {returnchildName;

}

@JsonProperty(value= “child_name”)public voidsetChildName(String childName) {this.childName =childName;

}publicString getChildAge() {returnchildAge;

}

@JsonProperty(value= “child_age”)public voidsetChildAge(String childAge) {this.childAge =childAge;

}publicString getChileFather() {returnchileFather;

}public voidsetChileFather(String chileFather) {this.chileFather =chileFather;

}

@OverridepublicString toString() {return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);

}

}

View Code

这样能收到了:

Child[childName=小孩儿,childAge=4,chileFather=]

3.当使用fastjson解析数据时。

1)Child类此时不加任何注解。

2)发送请求:http://localhost:8081/testJsonField.do?childStr={child_name:123, child_age:1}

3)controller接收:

faa4883cba365fdb170260a6bbd906ce.png

可以看到此时是接受不到的。

4)我们在Child类属性的set方法上加上@JSONField注解,name来匹配json串中的key:

public classChild {privateString childName;privateString childAge;privateString chileFather;publicString getChildName() {returnchildName;

}

@JSONField(name=”child_name”)public voidsetChildName(String childName) {this.childName =childName;

}publicString getChildAge() {returnchildAge;

}

@JSONField(name=”child_age”)public voidsetChildAge(String childAge) {this.childAge =childAge;

}publicString getChileFather() {returnchileFather;

}public voidsetChileFather(String chileFather) {this.chileFather =chileFather;

}

@OverridepublicString toString() {return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);

}

}

再次接受就能收到了:

98e379c990250ca2c9d474b2084a845a.png

5)使用@JSONField(serialize = false)   在get方法上添加来过滤掉不需要序列化的字段:

Child类:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.test.dto;importcom.alibaba.fastjson.annotation.JSONField;importorg.apache.commons.lang3.builder.ToStringBuilder;importorg.apache.commons.lang3.builder.ToStringStyle;public classChild {privateString childName;privateString childAge;privateString chileFather;publicString getChildName() {returnchildName;

}

@JSONField(name=”child_name”)public voidsetChildName(String childName) {this.childName =childName;

}publicString getChildAge() {returnchildAge;

}

@JSONField(name=”child_age”)public voidsetChildAge(String childAge) {this.childAge =childAge;

}

@JSONField(serialize= false)publicString getChileFather() {returnchileFather;

}public voidsetChileFather(String chileFather) {this.chileFather =chileFather;

}

@OverridepublicString toString() {return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);

}

}

View Code

我们可以看到childFather字段没有被序列化:

59a02d307c5d2f77d9a6460ee8e0fb1f.png

—–

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125783.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • IOS版的MT4软件如何下载安装「建议收藏」

    IOS版的MT4软件如何下载安装「建议收藏」T4的版本总体来说还是比较全。包含了电脑版、安卓版/ios版,以及mac版。那么今天来重点讲解一下IOS版本的mt4如何下载。下载方式主要分以下2种:(1)在网页上获取安装包,通常mt4。yhtz。cc涵盖了多个版本的安装包,选择你需要的IOS即可下载到手机上后,然后就进入安装流程,点击下一步,下一步,总体来说,就是跟着安装提示走即可。(2)IOS属于手机版,IOS是可以在苹果应用商店下载的。下载流程就是:搜索Mt4,然后点击下载,一般会自动安装哦,就跟下载其他的客户端是一样的。下载安装好后

    2022年8月15日
    3
  • post请求百度网址内容和访问本地springmvc工程controller

    post请求百度网址内容和访问本地springmvc工程controller

    2021年7月19日
    125
  • Java集合详解(超详细)

    Java集合详解(超详细)这里写目录标题一、集合框架的概述二、Collection接口(一)常用方法(二)Iterator迭代器接口(三)JDK5.0新特性–增强for循环:(foreach循环)三、Collection子接口:List接口一、集合框架的概述集合与数组存储数据概述:集合、数组都是对多个数据进行存储操作的结构,简称Java容器。说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi,数据库中)数组存储的特点:一旦初始化以后,其长度就确定了。数组一旦

    2022年5月25日
    32
  • windows server2016搭建ftp服务器_搭建网站的服务器

    windows server2016搭建ftp服务器_搭建网站的服务器WindowsServer2016系统中,快速搭建FTP服务器,作为文件服务器,下面分三步说明:安装IIS和FTP服务 配置FTP服务 测试FTP一、安装IIS和FTP服务首先点击开始菜单,进入找到服务器管理器,点击打开。进入后,找到管理菜单,点击添加角色和功能。进入服务器系统打开“服务器管理器”,点击“添加角色和功能”进入角色添加向导,一直点击下一步按钮到服务…

    2025年10月28日
    5
  • 数据库sql嵌套查询题_sql子查询嵌套优化

    数据库sql嵌套查询题_sql子查询嵌套优化一、嵌套查询概念在sql语言中,一个select-from-where语句成为一个查询块,将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询成为嵌套查询。外层的查询块称为外层查询或父查询,内层的查询称为内层查询或子查询。注意点:子查询的select语句不能使用orderby子句,orderby只能对最终查询结果排序。嵌套查询分类:1、相关子查询/关联子查询:子查询的查询条件依赖于父查询,比如,如果子查询需要执行多次,即采用循环的方式,先从外部查询开始,每

    2022年8月10日
    6
  • centos7上安装kafka教程「建议收藏」

    centos7上安装kafka教程「建议收藏」一、centos7安装java8去oracle官网下载:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.htmltar-zxvfjdk-8u281-linux-x64.tar.gzmkdir/usr/javamvjdk1.8.0_281/usr/java环境变量配置:打开/etc/profile配置文件vi/etc/profile在配置文件末尾添加如下配置:exportJAV

    2022年10月9日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号