Java слияние двух объектов (Json, ObjectMapper)

183
09 января 2020, 04:50

Есть два объекта класса MyBean (в классе всего полей 15 типа int и String):

MyBean old = new MyBean();
MyBean diff = new MyBean();

diff это объект который приходит в метод, для изменения old. У него как правило, одно поле не равняющееся null. Это поле надо изменить в old. В Json это выглядит вот так:

diff: {"nat_udp_update_time":333}
old: {"nat_udp_update_time":15,"static_sip_local_port":1111}

Результат нужен такой:

old: {"nat_udp_update_time":333,"static_sip_local_port":1111}

Как удобнее сделать слияние этих объектов?

Я пробовал через ObjectMapper, но не нашел подходящего метода.

Answer 1

Думаю можно попробовать использовать метод putAll класса JSONObject из библиотеки json-simple например:

import org.json.simple.JSONObject;
public class Test {
    public static void main(String[] args) {
        JSONObject jsonObj = new JSONObject();
        jsonObj.put("nat_udp_update_time", 15);
        jsonObj.put("static_sip_local_port", 1111);
        JSONObject jsonObj2 = new JSONObject();
        jsonObj2.put("nat_udp_update_time", 333);
        jsonObj.putAll(jsonObj2);
        System.out.println(jsonObj);
    }
}

Вывод:

{"static_sip_local_port":1111,"nat_udp_update_time":333}

Надеюсь то, что надо.

READ ALSO
Авто инкремент ключей в HashMap

Авто инкремент ключей в HashMap

Подскажите, почему не работает кодВ Map необходимо добавлять имя объекта с уникальным ключом

131
Ошибка в алгоритме выявление 2ух минимальных чисел в массиве

Ошибка в алгоритме выявление 2ух минимальных чисел в массиве

Формат ввода Первая строка входного файла содержит целое число N — количество дроидов (), вторая строка — N целых чиселФормат вывода Выведите...

181
JAVA, IntelliJ IDEA и ошибка Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException

JAVA, IntelliJ IDEA и ошибка Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException

Я очень, очень глупый новечёкУ меня есть ошибка но нет решения(((( A Google отказываеться помогать(((( Пожалуйста, сделайте это за него

172