首先说一下这个注解:
我在第一次使用的情境,是在springmvc中对于data类型数据格式的处理上面使用的
很早以前使用的只记得在实体类entity中date变量上面加一个注解但是记不大清楚,到底是什么,所以,在网上搜索了一下,没想到竟然是一无所获。
所以在这篇博文上面,记录这个注解:@jsonField
下面是我转载的比较不错的博文,希望大家对这个注解,能够有更深的理解。
最近做项目中,使用了json格式在服务器之间进行数据传输。但是发现json格式数据不符合JAVA中的变量定义规则,并且难以理解,因此需要在后台中做二次处理,将数据处理成我们系统中定义的格式。
思路:
1. 定义需要返回的bean,bean中定义需要返回的数据
2. 获取到需要处理的JSON字符串
3. 将JSON字符串转换为bean,再将转换后的bean返回给客户端。
由于json中的key与bean中的属性不能匹配,因此在转换过程中出现了部分属性为null的情况。经过查看官方文档,发现可以使用@JSONField进行解释,但是并没有详细的使用说明。
@JSONField的作用对象:
1. Field
2. Setter 和 Getter方法
注:FastJson在进行操作时,是根据getter和setter的方法进行的,并不是依据Field进行。
介绍完@JSONField之后,针对以上场景,给出JAVA代码
一、作用Field
@JSONField作用在Field时,其name不仅定义了输入key的名称,同时也定义了输出的名称。代码如下:
- packageorg.java.json.fastjson.bean;
- importcom.alibaba.fastjson.JSONObject;
- importcom.alibaba.fastjson.annotation.JSONField;
- publicclassPerson{
- @JSONField(name="name")
- privateStringname;
- @JSONField(name="age")
- privateStringage;
- @JSONField(name="desc")
- privateStringdesc;
- publicStringgetName(){
- returnname;
- }
- publicvoidsetName(Stringname){
- this.name=name;
- }
- publicStringgetAge(){
- returnage;
- publicvoidsetAge(Stringage){
- this.age=age;
- publicStringgetDesc(){
- returndesc;
- publicvoidsetDesc(Stringdesc){
- this.desc=desc;
- publicvoidsetNAME(StringNAME){
- this.name=NAME;
- publicvoidsetAGE(StringAGE){
- this.age=AGE;
- publicvoidsetDESC(StringDESC){
- this.desc=DESC;
- publicStringtoString(){
- returnJSONObject.toJSONString(this);
- }
- packageorg.java.json.fastjson.json;
- importorg.java.json.fastjson.bean.Person;
- importorg.junit.Before;
- importorg.junit.Test;
- importcom.alibaba.fastjson.JSONObject;
- publicclassPersonTest{
- privatePersonperson;
- /**
- *初始化对象
- */
- @Before
- publicvoidsetUp(){
- person=newPerson();
- person.setName("xianglj");
- person.setAge("20");
- person.setDesc("只是一个测试");
- @Test
- publicvoidtest(){
- StringjsonStr=JSONObject.toJSONString(person);
- System.out.println("beantojson:"+jsonStr);
- //改变json的key为大写
- jsonStr=jsonStr.toUpperCase();
- System.out.println("需要转换的json:"+jsonStr);
- person=JSONObject.toJavaObject(JSONObject.parSEObject(jsonStr),Person.class);
- System.out.println("jsontobean:"+person.getName());
- }
输出如下:
beantojson:{"age":"20","desc":"只是一个测试","name":"xianglj"}