Jackson Deserialize Variable как Json String
У меня есть такая модель:
private String message;
private Integer errorCode;
private String data;
Я получаю, например, следующий JSON из удаленного:
{"data": {"cat": "1.2.3.4", "ner": "80", "name": "pinta" }, "message" : "m", "errorCode" : 12}
Когда я десериализую этот JSON, переменные message
и errorCode
получают правильное значение. Однако я не хочу интерпретировать содержимое моей переменной data
. Вместо этого я хочу, чтобы это была следующая строка:
{"cat": "1.2.3.4", "ner": "80", "name": "pinta" }
После этого я буду интерпретировать это сам. Как я могу получить это значение data
?
Ответы
Ответ 1
Jackson issue 596 был создан для желаемой функциональности, описанной в исходном вопросе. Голосуйте за него, если хотите, чтобы он был реализован.
Текущее решение доступно для реализации пользовательской обработки десериализации.
Кроме того, Как я могу включить raw JSON в объект с использованием темы Jackson?, этот вопрос охватывает эту тему.
Ответ 2
Я бы предпочел, чтобы вы привязывали данные к промежуточному объекту; обычно это либо java.util.Map
, либо org.codehaus.jackson.JsonNode
(JSON Tree). И тогда вы можете получить доступ к данным любым способом; включая легко преобразование в POJO с помощью ObjectMapper.convertValue(inputPojo, outputType)
).