天天看点

hutool json序列化疑难杂症

话不多说直接开搞。

  1. 返回数据和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 + '\'' +
                    '}';
        }
    }
           
hutool json序列化疑难杂症

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 + '\'' +
                    '}';
        }
    }
           
hutool json序列化疑难杂症