name属性指定JSON串中key的名称
用于解决,当前端传过来的JSON的key与字段名不同时,我们可以在字段名上加上这个注解
Java Bean类
- @Data
- @AllArgsConstructor
- @NoArgsConstructor
- public class User {
- @JSONField(name = "userName")
- private String username;
- @JSONField(name = "passWord")
- private String password;
- @JSONField(format = "yyyy-MM-dd HH:mm:ss",name = "createTime")
- private Date date;
- }
测试一:发送JSON数据
- User user = new User("lixianhe","1234456",new Date());
- System.out.println(user);
- String stringUser = JSON.toJSONString(user);
- System.out.println(stringUser);
- /*
- 输出结果
- User(username=lixianhe, password=1234456, date=Fri Jun 24 10:33:38 CST 2022)
- {
- "createTime":"2022-06-24 10:33:38",
- "passWord":"1234456",
- "userName":"lixianhe"
- }
- */
测试二:接受JSON数据
- String s = "{\"createTime\":\"2022-06-24 10:33:38\",\"passWord\":\"1234456\",\"userName\":\"lixianhe\"}";
- User user = JSONObject.parseObject(s,User.class);
- System.out.println(user);
- // 输出结果:User(username=lixianhe, password=1234456, date=Fri Jun 24 10:33:38 CST 2022)
指定JSON的时间格式
从前端接受包含时间的JSON时候,时间数据为此类型的字符串,JSON转Java对象时会自动转化为Date类型
- @Data
- @AllArgsConstructor
- @NoArgsConstructor
- public class User {
- @JSONField(format = "yyyy-MM-dd HH:mm:ss",name = "createTime")
- private Date createTime;
- }
serialize / deserialize 指定字段不序列化 / 不反序列化,默认都是true
- @JSONField(serialize=false)
- public Date date;
serialzeFeatures 属性
fastjson默认的序列化规则是当字段的值为null的时候,是不会序列化这个字段
- @JSONField(serialzeFeatures=SerializerFeature.WriteMapNullValue)
- private String address;
此时,value的值为null的时候,依然会把它的值序列化出来