Hi Vince,

If I'm understanding the implementation of mapper.convertVaue(), I think it 
doesn't matter whether it's on serialization or deserialization since 
convertValue() does both.

To illustrate, let's say I have a pojo with one field and the 
anySetter/anyGetter:

@JsonProperty("onlyField")
private String onlyField;

@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
    return this.additionalProperties;
}

@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
    this.additionalProperties.put(name, value);
}

If I deserialize {"onlyField": "someValue", "additional": "anotherValue"}, 
I end up with a pojo with object.getOnlyField() == "someValue") and 
object.getAdditionalProperties().get("additional") == "anotherValue")

Now when I call mapper.convertValue(object, MyPojo.class):
if I drop on serialization, I end up with a serialized object of 
{"onlyField": "someValue"}
if I drop on deserialize, I start with a serialized object of  
{"onlyField": "someValue", "additional": "anotherValue"} but end up with a 
pojo with an empty map in object.getAditionalProperties().

If I can do it at either step, I'd love to know how, but either one will 
solve my current problem.

Here's a gist with a sample, which currently fails: 
https://gist.github.com/hancockks/02509e5d06b0f1d95b1e3e6c4a23a9f1

On Saturday, August 12, 2023 at 8:31:54 AM UTC-4 Joo Hyuk Kim (김주혁) wrote:

> Hello Ken,
>
> To make things clear, a few questions.
>
>    - Meaning of "to strip any additional properties before writing an 
>    object". Are you looking to exclude `additionalProperties` only during 
>    serialization, but include in deserialization? 
>    - Is the primary intent to generate a JSON output that does not 
>    include `additionalProperties`, or is there another objective? 
>    - Could you also provide a simple, reproducible example using just 
>    Jackson and Java?
>    
> Thanks,
>
> Joo Hyuk, Kim (Vince)
> On Saturday, August 12, 2023 at 1:31:13 AM UTC+9 Ken Hancock wrote:
>
>>
>> I have a pojo that serializes any additional properties into 
>>
>> @JsonAnyGetter
>> public Map<String, Object> getAdditionalProperties() {
>>     return this.additionalProperties;
>> }
>>
>> @JsonAnySetter
>> public void setAdditionalProperty(String name, Object value) {
>>     this.additionalProperties.put(name, value);
>> }
>>
>> However, I have an odd use case where I want to be able to strip any 
>> additional properties before writing an object. I'm fairly sure with all of 
>> Jackson's configuration settings that I should be able to configure a 
>> mapper such that mapper.convertValue(myPojo, MyPojo.class) should be able 
>> to serialize and deserialize back again, dropping the additionalProperties 
>> when it serializes?   The pojo is deeply nested and auto-generated, so I'd 
>> prefer not to hard-code having to just clear additionalProperties at each 
>> sub-object.
>>
>> Thanks,
>>
>> Ken
>>
>

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/jackson-user/b1312629-c09c-4e00-868b-df4eb61be842n%40googlegroups.com.

Reply via email to