在某些应用场景下,如果需要定制序列化输出,比如说,希望序列化采用之后采用"ID",而不是"id",就可以使用@JSONField这个注解。
@JSONField注解的作用范围:Field、Setter和Getter方法;FastJson在进行操作时,是根据getter和setter的方法进行的,并不是依据Field进行。
如果JavaBean没有缺省构造方法,@JSONCreator可以用来指定构造方法来创建Java对象。
使用@JSONField注解,代码案例:package com.what21.fastjson.fj04;
import com.alibaba.fastjson.annotation.JSONField;
public class User {
// ID
@JSONField(name="id2")
private String id;
// 名称
@JSONField(name="name2")
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}package com.what21.fastjson.fj04;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
public class FastJsonMain {
/**
* @param args
*/
public static void main(String[] args) {
User user = new User();
user.setId("zhangsan");
user.setName("张三");
// 序列化
String json = JSON.toJSONString(user);
System.out.println("User to JSON -> ");
System.out.println(json);
// 反序列化
String upperJson = json.toUpperCase();
user = JSON.parseObject(upperJson, User.class);
System.out.println("JSON to bean :");
System.out.println("user id :" + user.getId());
System.out.println("user name :" + user.getName());
// 反序列化
String jsonStr = "{\"id2\":\"zhangsan\",\"name2\":\"张三\"}";
JSONObject jsonObj = JSONObject.parseObject(jsonStr);
user = JSONObject.toJavaObject(jsonObj, User.class);
System.out.println("JSON to bean :");
System.out.println("user id :" + user.getId());
System.out.println("user name :" + user.getName());
}
}
输出内容:User to JSON ->
{"id2":"zhangsan","name2":"张三"}
JSON to bean :
user id :ZHANGSAN
user name :张三
JSON to bean :
user id :zhangsan
user name :张三
使用@JSONCreator注解,代码案例:package com.what21.fastjson.fj04;
import com.alibaba.fastjson.annotation.JSONCreator;
import com.alibaba.fastjson.annotation.JSONField;
public class UserEntity {
private String id;
private String name;
@JSONCreator
public UserEntity(@JSONField(name = "id") String id,
@JSONField(name = "name") String name){
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
}package com.what21.fastjson.fj04;
import com.alibaba.fastjson.JSON;
public class FastJsonAnnotationMain {
/**
* @param args
*/
public static void main(String[] args) {
//
UserEntity userEntity = new UserEntity("what21","IT小奋斗");
String json = JSON.toJSONString(userEntity);
System.out.println("UserEntity to JSON -> ");
System.out.println(json);
// 反序列化
userEntity = JSON.parseObject(json, UserEntity.class);
System.out.println("JSON to bean :");
System.out.println("user id :" + userEntity.getId());
System.out.println("user name :" + userEntity.getName());
}
}
输出内容:UserEntity to JSON ->
{"id":"what21","name":"IT小奋斗"}
JSON to bean :
user id :what21
user name :IT小奋斗