下面的代码是使用阿里巴巴的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"}