Я хочу десериализовать объект, который помечен @JsonRootName
.Однако JSON, в котором переносится объект, содержит еще одно дополнительное свойство.В результате Джексон жалуется на:
com.fasterxml.jackson.databind.exc.MismatchedInputException: Unexpected token (FIELD_NAME), expected END_OBJECT: Current token not END_OBJECT (to match wrapper object with root name 'account'), but FIELD_NAME at [Source: (ByteArrayInputStream); line: 1, column: 26]
.
Очевидно, десериализация @JsonRootName
аннотированных объектов работает ТОЛЬКО, если этот объект является единственным свойством в файле JSON - поскольку он не ожидает, что "lastTransactionID"
будет там.
Вот мой Account
класс:
@JsonRootName("account")
public class Account {
private String id;
}
Это JSON, который мне нужно десериализовать:
{
"account": {
"id": "1234"
},
"lastTransactionID": "1"
}
Поскольку я использую пружину, у меня также есть эта настройка spring.jackson.deserialization.unwrap_root_value=true
.
Есть ли способ решить эту проблему без:
- написания собственного десериализатора?
ИЛИ
- , перехватывающего ответ и удаляющего егодополнительной собственности перед десериализацией?