Support for adding to ObjectMaps in JSON with add: true
This commit is contained in:
@@ -1054,7 +1054,21 @@ public class ContentParser{
|
|||||||
}
|
}
|
||||||
Field field = metadata.field;
|
Field field = metadata.field;
|
||||||
try{
|
try{
|
||||||
field.set(object, parser.readValue(field.getType(), metadata.elementType, child, metadata.keyType));
|
boolean mergeMap = ObjectMap.class.isAssignableFrom(field.getType()) && child.has("add") && child.get("add").isBoolean() && child.getBoolean("add", false);
|
||||||
|
|
||||||
|
if(mergeMap){
|
||||||
|
child.remove("add");
|
||||||
|
}
|
||||||
|
|
||||||
|
Object readField = parser.readValue(field.getType(), metadata.elementType, child, metadata.keyType);
|
||||||
|
|
||||||
|
//if a map has add: true, add its contents to the map instead
|
||||||
|
if(mergeMap && field.get(object) instanceof ObjectMap<?,?> baseMap){
|
||||||
|
baseMap.putAll((ObjectMap)readField);
|
||||||
|
}else{
|
||||||
|
field.set(object, readField);
|
||||||
|
}
|
||||||
|
|
||||||
}catch(IllegalAccessException ex){
|
}catch(IllegalAccessException ex){
|
||||||
throw new SerializationException("Error accessing field: " + field.getName() + " (" + type.getName() + ")", ex);
|
throw new SerializationException("Error accessing field: " + field.getName() + " (" + type.getName() + ")", ex);
|
||||||
}catch(SerializationException ex){
|
}catch(SerializationException ex){
|
||||||
|
|||||||
Reference in New Issue
Block a user