话不多说直接开搞。
- 返回数据和bean的字段属性大小写不一致,没有符合驼峰命名。
例如 {"id":"20","NAME":"cc","english_score":"100","ChineseScore":"100"}
数据类型 有全大写 NAME 有下划线命名english_score 有驼峰命名但是首字母大写
一般来说我们bean的命名规范是驼峰命名 aaaBbbCccc 但是有时候第三方数据就是千奇百怪,我们如果属性和对方大小写下划线完全一致肯定能json序列化。但是不可能。
public static void main(String[] args) {
String json="{\"id\":\"20\",\"NAME\":\"cc\",\"english_score\":\"100\",\"ChineseScore\":\"100\"}";
System.out.println(json);
JSONConfig jsonConfig = JSONConfig.create().setIgnoreCase(true);
Student student=JSONUtil.toBean(json,jsonConfig,Student.class);
System.out.println(student);
}
class Student{
public String id;
public String Name;
public String englishScore;
public String chineseScore;
@Override
public String toString() {
return "Student{" +
"id='" + id + '\'' +
", Name='" + Name + '\'' +
", englishScore='" + englishScore + '\'' +
", chineseScore='" + chineseScore + '\'' +
'}';
}
}
2.返回值数据名称经常发生改变。
例如之前约定好对方的数据返回时{”id“,"1":"name":"cc"} 。但是隔了一段时间别人把name改为chineseName。
如何尽可能减少代码的改动。通过alias注解 对应json字段和bean的字段
public static void main(String[] args) {
String json ="{\"id\":\"1\",\"chineseName\":\"cc\"}";
System.out.println(json);
Teacher teacher=JSONUtil.toBean(json,Teacher.class);
System.out.println(teacher);
}
class Teacher{
public String id;
@Alias("chineseName")
public String name;
@Override
public String toString() {
return "Teacher{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
'}';
}
}