android (JAVA) 求两组不同结构的JSON,根据其中相同的KEY,数据连接

第一组JSON:
[{"id":"206","name":"携程旅行网","create_user":"admin"},{"id":"208","name":"美团点评","create_user":"admin"},{"id":"218","name":"杭州飞猪","create_user":"admin"},{"id":"228","name":"艺龙网","create_user":"admin"}]

第二组JSON:
[{"id":"206","bfjl":"3","bfdate":"2021-10-11"},{"id":"228","bfjl":"13","bfdate":"2021-10-13"}]

需要的结果,根据ID相同,连接JSON,不存在的自动空值:
[{"id":"206","name":"携程旅行网","create_user":"admin","bfjl":"3","bfdate":"2021-10-11"},{"id":"208","name":"美团点评","create_user":"admin","bfjl":"","bfdate":""},{"id":"218","name":"杭州飞猪","create_user":"admin","bfjl":"","bfdate":""},{"id":"228","name":"艺龙网","create_user":"admin","bfjl":"13","bfdate":"2021-10-13"}]

请帮忙解答



 class OneData {
        public String id;
        public String name;
        public String create_user;
    }

    class TwoData {
        public String id;
        public String bfjl;
        public String bfdate;
    }

    class Result {
        public String id;
        public String name;
        public String create_user;
        public String bfjl;
        public String bfdate;
    }

    public ArrayList<Result> converJson() {
        //结果集
        ArrayList<Result> result_list = new ArrayList<>();
        //step1: 转换数据
        // 第一组JSON:
        String json_one = "[{\"id\":\"206\",\"name\":\"携程旅行网\",\"create_user\":\"admin\"},{\"id\":\"208\",\"name\":\"美团点评\",\"create_user\":\"admin\"},{\"id\":\"218\",\"name\":\"杭州飞猪\",\"create_user\":\"admin\"},{\"id\":\"228\",\"name\":\"艺龙网\",\"create_user\":\"admin\"}]";
        ArrayList<OneData> Data_one = new Gson().fromJson(json_one, new TypeToken<ArrayList<OneData>>() {
        }.getType());


        String json_two = "[{\"id\":\"206\",\"bfjl\":\"3\",\"bfdate\":\"2021-10-11\"},{\"id\":\"228\",\"bfjl\":\"13\",\"bfdate\":\"2021-10-13\"}]";
        ArrayList<TwoData> Data_two = new Gson().fromJson(json_two, new TypeToken<ArrayList<TwoData>>() {
        }.getType());
        //step2: 筛选存储数据,组转数据


//为什么不直接在 for 嵌套 for 对比查询呢?因为这样不止耗时,如果逻辑过多,容易出错
        if (Data_two.size() > Data_one.size()) {
            HashMap<String, OneData> hashMap = new HashMap<>();
            for (OneData oneData : Data_one) {
                hashMap.put(oneData.id, oneData);
            }

            for (TwoData twoData : Data_two) {
                Result result = new Result();
                result.id = twoData.id;
                result.bfjl = twoData.bfjl;
                result.bfdate = twoData.bfdate;
                if (hashMap.containsKey(result.id)) {
                    result.name = hashMap.get(result.id).name;
                    result.create_user = hashMap.get(result.id).create_user;
                }
                result_list.add(result);
            }

        } else {
            HashMap<String, TwoData> hashMap = new HashMap<>();

            for (TwoData twoData : Data_two) {
                hashMap.put(twoData.id, twoData);
            }
            for (OneData oneData : Data_one) {
                Result result = new Result();
                result.id = oneData.id;
                result.bfjl = oneData.name;
                result.bfdate = oneData.create_user;
                if (hashMap.containsKey(result.id)) {

                    result.id = hashMap.get(result.id).id;
                    result.bfjl = hashMap.get(result.id).bfjl;
                    result.bfdate = hashMap.get(result.id).bfdate;
                }
                result_list.add(result);
            }
        }

        return result_list;
    }

用数组的forEach方法嵌套循环判断,key相同的再做逻辑处理。

先转成两个list,然后用对象判断,组合成新的list,json转list用gson开源库即可。

辛苦了,感谢