@JSONField注解属性字段上与set、get方法上。自定义json字符串转实体类,实体类转json;
@JSONField注解属性字段上与set、get方法上。使用@Data注解,对属性【pseudonym】手动重写setter/getter方法
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
@Data
public class Stu {
private String name;
//下划线自动转换
private String alias_name;
//下划线自动转换
// @JSONField(name="pen_name")
private String penName;
//实体类转为json,使用注解name值
@JSONField(name="pen_name2")
private String penName2;
private String pseudonym;
//实体类转为json,使用注解name值
@JSONField(name="pseud")
//不使用注解为属性名{"penName":"333","name":"1111","alias_name":"222","pen_name2":"444","pseudonym":"555"}
public String getPseudonym() {
return pseudonym;
}
//json转为实体类,使用注解name值
@JSONField(name="pseudo")
public void setPseudonym(String pseudonym) {
this.pseudonym = pseudonym;
}
public static void main(String[] args) {
String json = "{'name':'1111','aliasName':'222','pen_name':'333','pen_name2':'444','pseudo':'555'}";
Stu stu = JSON.parseObject(json, Stu.class);
System.out.println(stu);
System.out.println(JSONObject.toJSON(stu));
}
}
运行结果
Stu(name=1111, alias_name=222, penName=333, penName2=444, pseudonym=555)
{"pseud":"555","penName":"333","name":"1111","alias_name":"222","pen_name2":"444"}
Process finished with exit code 0
注:
@JsonProperty
这个注解提供了序列化和反序列化过程中该java属性所对应的名称。
Access.WRITE_ONLY:只在序列化时使用修改后的字段
Access.READ_ONLY:只在反序列化时使用,类似于@JsonAlias注解
Access.READ_WRITE:在序列化和反序列化都使用修改后字段
Access.AUTO:自动确定
@JsonAlias
这个注解是在JackSon 2.9版本中才有的。
作用是在反序列化的时候可以让Bean的属性接收多个json字段的名称。可以加在字段上或者getter和setter方法上