FastJson中@JSONField注解使用
最近在一个项目中,在组装信息给对方发送json字符串的时候,对方要字符key总是大写开头的,而用标准的
body = JSONObject.toJSONString(EnterpriseInfoDTO);
body = JSON.toJSONString(EnterpriseInfoDTO);
输出的时候,就算我们的属性定义是大写开头,但是经过FastJson转换之后,它也会是小写开头。
所以我们需要指定转换为json的时候,对应的key的值为大写。
需要使用@JSONField注解。
@JSONField(name = "AuthTime")
public String getAuthTime() {
return AuthTime;
}
一、作用Field (相当于get set的总和)
@JSONField作用在Field时,其name不仅定义了输入key的名称,同时也定义了输出的名称。
二、作用在setter和getter方法上
顾名思义,当作用在setter方法上时,就相当于根据 name 到 json中寻找对应的值,并调用该setter对象赋值。
当作用在getter上时,在bean转换为json时,其key值为name定义的值。实例如下:
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
public class JSONFieldTest {
@JSONField(name = "jsonName")
private String name;
private String age;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@JSONField(name = "jsonAge")
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getEmail() {
return email;
}
@JSONField(name = "jsonEmail")
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "JSONFieldTest [name=" + name + ", age=" + age + ", email="
+ email + "]";
}
public static void main(String[] args) {
JSONFieldTest jsonFieldTest = new JSONFieldTest();
jsonFieldTest.setAge("21岁");
jsonFieldTest.setEmail("111@11.com");
jsonFieldTest.setName("hhh");
System.out.println(JSONObject.toJSON(jsonFieldTest));
//输出了:{"jsonName":"hhh","jsonAge":"21岁","email":"111@11.com"}
}
}
还没有评论,来说两句吧...