Hi,

We are using @JsonMerge in our data model and this feature is very 
appealing in one of our use case where we have a JSON template 
configuration file we'd like to merge with some other values received from 
a REST API. It works fine for our POJOs but it looks merging collection 
regardless of their @JsonIdentityInfo. If confirmed, that could be a nice 
enhancement to evaluate e.g. not to duplicate the items in a collection but 
check for their identity first, then merge accordingly (also possibly 
driven by configuration).

Anyway, we are searching for workaround suggestions like using custom 
deserializer. Any suggestion? Because in such case, how would it be 
possible to reuse the "merge facility" on the objects? Any example or hint?

Please find below a basic illustration if necessary (note: our items can 
also be subclasses but that's not the point here). For example, consider 
the following:

public class Container {
    @JsonMerge
    private List<Item> items;

         
         // ... 

}

@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, 
property 
= "name")
public class Item {
    private String name;

         

    private String value;

         //... 

}


Our JSON template looks like:

{ "items": [{"name":"item1", "value": "value1"}, {"name":"item2", "value": 
"value2"}] }


And we need it would be merged with:

{ "items": [{"name":"item2", "value": "value2update"}, {name:"item3", 
"value": "value3"}] }


After using ObjectMapper.readerForUpdating(...), we'd like to obtain:
 

{ "items": [{"name":"item1", "value": "value1"}, {"name":"item2", "value": 
"value2update"}, {name:"item3", "value": "value3"}] }


As of today, unless we made a mistake, we are getting:
 

{ "items": [{"name":"item1", "value": "value1"}, {"name":"item2", "value": 
"value2"}, {"name":"item2", "value": "value2update"}, {name:"item3", 
"value": "value3"}] }


Thanks,
Fabrice

-- 
You received this message because you are subscribed to the Google Groups 
"jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jackson-user+unsubscr...@googlegroups.com.
To post to this group, send email to jackson-user@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to