Обработка неизвестных свойств JSON с Джексоном - PullRequest
7 голосов
/ 04 мая 2010

Для десериализации json с неизвестным полем в объект есть @ JsonAnySetter.

Но что, если я прочитал такой json в свой объект, изменил некоторые известные поля и записал его обратно в json? Неизвестные свойства будут потеряны.

Как мне обращаться с такими случаями? Можно ли отобразить объект или мне нужно прочитать данные в JsonNode или Map?

Ответы [ 3 ]

2 голосов
/ 15 мая 2010

Есть этот RFE для Джексона: http://jira.codehaus.org/browse/JACKSON-292, чтобы добавить такую ​​функцию. Имеет смысл, когда вы думаете об этом.

2 голосов
/ 12 июля 2018

Теперь можно использовать @JsonAnyGetter для предоставления метода, позволяющего сериализацию динамических свойств:

@JsonAnyGetter
public Map<String, String> getDynamicProperties() {
    return dynamicProperties; // a field like this exists
}
2 голосов
/ 04 мая 2010

Unmarshalling в пользовательский класс Java имеет свои преимущества и недостатки. Это дает вам хорошую статическую типизацию, но это хорошо, статично. Javadoc для @JsonAnySetter предполагает, что он похож на @XmlAnyElement в JAXB, но в отличие от @XmlAnyElement объекты данных не содержат информации об именах, поэтому это улица с односторонним движением.

если вам нужно обрабатывать динамические потоки JSON, вам нужно прикусить пулю и использовать Map или JsonNode.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...