Fastjson在反序列化JSON到JavaBean时,默认情况下不会区分JSON中的key和JavaBean中属性名称的大小写。
public class User {
private String username;
}
String jsonString = "{\"userName\":\"JohnDoe\"}";
User user = JSON.parseObject(jsonString, User.class);
// 反序列化成功,尽管JSON中的key是"userName",而JavaBean中的属性是"username"
当JavaBean中同时定义了username和userName属性时,Fastjson会将JSON中的userName映射到JavaBean中的userName属性,而username属性将保持无值状态。
public class User {
private String username;
private String userName;
// getter 和 setter 省略
}
String jsonString = "{\"userName\":\"JohnDoe\"}";
User user = JSON.parseObject(jsonString, User.class);
// 反序列化后,user.userName == "JohnDoe",而user.username 为 null
FastJson提供了注解@JSONField注解:通过在JavaBean的属性上使用@JSONField注解,可以明确指定JSON中的key,确保正确的属性被赋值。
import com.alibaba.fastjson.annotation.JSONField;
public class User {
@JSONField(name = "userName")
private String username;
// 其他属性和方法
}
大家注意这个问题。
网友评论