Зачастую мне нужно объединить два объекта JSON (аналогично тому, как работает jQuery $.extend()
). Однако библиотека Gson не имеет встроенных функций, и они сказали they won't implement it.Слияние/расширение объектов JSON с использованием Gson в Java
Делать что-то вроде:
private void merge(JsonObject firstObj, JsonObject secondObj){
for(String keyInSecondObj : secondObj.entrySet().keySet()) {
if(!firstObj.has(keyInSecondObj)){
firstObj.add(secondMap.get(keyInSecondObj));
}
}
слишком просто потому, что она не работает рекурсивно сливающиеся JsonObjects, не обрабатывают конфликты, когда ключ существует в обеих картах, и не имеет никакой специальной обработки для непримитивного такие как массивы.
Мне не удалось найти готовые решения для этого. Я предпочел бы использовать что-то, что было тщательно протестировано вместо того, чтобы писать мой собственный метод, но он должен быть Gson (не Джексон или другой).
Изменить: Я в конечном итоге писать свою собственную реализацию, как добавили в качестве answer to this question
This question является не дубликат, потому что он не использует Gson (или Java по этому вопросу).
Это simlar, но не использует библиотеку Gson: http://stackoverflow.com/questions/21160337/how-can-i-merge-two-jobject – bradvido
Пожалуйста, ознакомьтесь с ними, прежде чем добавить теги их на ваш вопрос ... – Sumurai8
@JarrodRoberson Этот вопрос не обман! Пожалуйста, см. Мое объяснение. В отмеченном дубликате даже не используется Java – bradvido