正常属性序列化和反序列化
实体类案例:
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class User implements Serializable{
private String name;
private Integer age;
}
正常序列化和反序列化JSON对应为:
{"age":10,"name":"小明"}
案例:
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));
将对象序列化为json,指定序列化后的属性名
实体类的属性上面增加@JsonProperty(“字段名”)注解(fastjson)
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonProperty("姓名")
private String name;
@JsonProperty("年龄")
private Integer age;
在springboot请求接口返回对象得到的结果:(因为springboot使用fastjson序列化对象)
{"年龄":10,"姓名":"小明"}
将json反序列化为对象,指定json中key对应实体类的属性
json字符串为:
{"年龄":10,"姓名":"小明"}
实体类属性上增加@JSONField(name = “属性名”)注解(alibaba.fastjson)
import com.alibaba.fastjson.annotation.JSONField;
@JSONField(name = "姓名")
private String name;
@JSONField(name = "年龄")
private Integer age;
代码实现:
String str = "{\"年龄\":10,\"姓名\":\"小明\"}";
User user = JSONObject.parseObject(str, User.class);
System.out.println(JSONObject.toJSONString(user));
输出结果: 可以看到直接输出key也是自定义的,但这里用的是alibaba.fastjson注解完成的,和上面使用场景不一样,因为springboot使用fastjson序列化对象
{"姓名":"小明","年龄":10}