使用FASTJSON将JSON数据映射到Java对象属性中

下面的代码是使用阿里巴巴的fastjson讲JSON字符串映射到Java对象属性里fastjson的pom引用如下:<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson...

下面的代码是使用阿里巴巴的fastjson讲JSON字符串映射到Java对象属性里

fastjson的pom引用如下:

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.47</version>
</dependency>

java代码如下:

import java.io.Serializable;

import org.junit.Test;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.annotation.JSONField;

public class Main {
    @Test
    public void test() {
        MyModel model = (MyModel)JSON.parseObject("{\"age\":11,\"name\":\"testName\"}", MyModel.class);
        System.out.println("name传入:" + model);
        MyModel model2 = (MyModel)JSON.parseObject("{\"age\":11,\"paramName\":\"testName\"}", MyModel.class);
        System.out.println("paramName传入:" + model2);
        
        System.out.println("序列化输出:"+JSON.toJSONString(model2));
    }

    static class MyModel implements Serializable {

        private static final long serialVersionUID = -4923876196016281237L;
        //比如是前端固定的入参名
        @JSONField(name = "paramName", serialize = false)
        private String name;
        private Integer age;

        //比如就是数据库字段名
        @JSONField(name = "protoName")
        public String getName() {
            return name;
        }

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

        public Integer getAge() {
            return age;
        }

        public void setAge(Integer age) {
            this.age = age;
        }

        @Override
        public String toString() {
            return "name>" + name + "|age>" + age;
        }

    }

}


如果你希望输出时不按照属性输出,而按照JSONField输出

则可以吧注解

@JSONField(name = "protoName")

加到属性上 或 get方法上


上面的Java代码输出结果:

name传入:name>null|age>11
paramName传入:name>testName|age>11
序列化输出:{"age":11,"protoName":"testName"}


条评论

请先 登录 后评论
不写代码的码农
三叔

422 篇文章

作家榜 »

  1. 小编 文章
返回顶部
部分文章转自于网络,若有侵权请联系我们删除