当前位置:   ASP > 正文

JSON序列化/反序列化,指定自定义字段名key转换注解配置_json转化指定字段别名

json转化指定字段别名

正常属性序列化和反序列化

实体类案例:

@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class User implements Serializable{
    private String name;
    private Integer age;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

正常序列化和反序列化JSON对应为:

{"age":10,"name":"小明"}
  • 1

案例:

import com.alibaba.fastjson.JSONObject;

// JSON反序列化为对象,再将对象序列化为JSON输出
String str = "{\"age\":10,\"name\":\"小明\"}";
User user = JSONObject.parseObject(str, User.class);
System.out.println(JSONObject.toJSONString(user));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

将对象序列化为json,指定序列化后的属性名

实体类的属性上面增加@JsonProperty(“字段名”)注解(fastjson)

import com.fasterxml.jackson.annotation.JsonProperty;

@JsonProperty("姓名")
private String name;
@JsonProperty("年龄")
private Integer age;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在springboot请求接口返回对象得到的结果:(因为springboot使用fastjson序列化对象)

{"年龄":10,"姓名":"小明"}
  • 1

将json反序列化为对象,指定json中key对应实体类的属性

json字符串为:

{"年龄":10,"姓名":"小明"}
  • 1

实体类属性上增加@JSONField(name = “属性名”)注解(alibaba.fastjson)

import com.alibaba.fastjson.annotation.JSONField;

@JSONField(name = "姓名")
private String name;
@JSONField(name = "年龄")
private Integer age;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

代码实现:

String str = "{\"年龄\":10,\"姓名\":\"小明\"}";
User user = JSONObject.parseObject(str, User.class);
System.out.println(JSONObject.toJSONString(user));
  • 1
  • 2
  • 3

输出结果: 可以看到直接输出key也是自定义的,但这里用的是alibaba.fastjson注解完成的,和上面使用场景不一样,因为springboot使用fastjson序列化对象

{"姓名":"小明","年龄":10}
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/ASP/detail/39827
推荐阅读
相关标签
  

闽ICP备14008679号