I think so, but that was my original question -- I couldn't figure out how to customize the master to drop that field.
On Tuesday, August 15, 2023 at 9:15:49 PM UTC-4 Joo Hyuk Kim (Vince) wrote: > There was similar issue in jackson-databind > <https://github.com/FasterXML/jackson-databind/issues/1376> Github , but > the issue is per-class declaration usecase. > > If we can have a differently configured mapper, how about.... > > 1. Copy the global mapper via `mapper.copy()` > 2. Add custom de/serializer to the new mapper from (1) > 3. The custom de/serializer from (2) will handle de/serialization for > specific cases? > > ... this, might work? > On Wednesday, August 16, 2023 at 3:59:26 AM UTC+9 Ken Hancock wrote: > >> I can't remove the @JsonAnySetter and @JsonAnyGetter as >> >> (1) those are generated automatically from the schema >> (2) in the nominal use case I want to preserve the additional properties >> >> It's only in one special case where I'm sending data to an external >> system that I need to strip them off, hence I'd like to be able to >> configure that at runtime via a differently configured mapper. >> >> On Tuesday, August 15, 2023 at 5:30:35 AM UTC-4 Joo Hyuk Kim (Vince) >> wrote: >> >>> > if I drop on... >>> >>> Though I am not sure what you mean by "dropping on", but as far as I >>> understood.... >>> >>> ```java >>> >>> SimpleObject *simpleObject *= new SimpleObject(); >>> >>> *simpleObject*.setSingleField("onlyField"); >>> >>> *simpleObject*.setAdditionalProperty("additional", "additional"); >>> >>> *simpleObject*.setAdditionalProperty("remains", "remains"); >>> >>> ``` >>> >>> ...should serialize into `{"singleField":"onlyIfeld"}`. >>> >>> >>> And JSON string `{"onlyField": "someValue", "additional": >>> "anotherValue"}` should deserialize into an instance of `SimpleObject` >>> class with "onlyField" as its singleField and empty map? >>> >>> Try simply removing `@JsonAnySetter` and `@JsonAnyGetter`. >>> >>> >>> Hope it helps, >>> >>> thanks >>> On Monday, August 14, 2023 at 11:59:36 PM UTC+9 Ken Hancock wrote: >>> >>>> >>>> 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jackson-user/de0ff137-4ffe-445c-b6f5-f345ecc5caecn%40googlegroups.com.
