Учитывая эти классы:
@Value
private static class Message {
private final String type;
private final MyType message;
}
@Value
public class MyType {
private final String foo;
}
Джексон продюсирует:
{
"Type" : "Test",
"Message" : {"foo" : "bar"}
}
Есть ли какая-то аннотация или инструкция, которую я могу дать Джексону, чтобы попросить его сериализовать вложенный сложный тип в виде строки, например. желаемый JSON будет:
{
"Type" : "Test",
"Message" : "{\"foo\" : \"bar\"}"
}
Я попробовал обе эти аннотации в поле сообщения:
@JsonFormat(shape = JsonFormat.Shape.STRING)
@JsonSerialize(as=String.class)
Ни один из них не имеет желаемого эффекта. На данный момент мой хак должен сделать это во время строительства:
return new Message("Test", mapper.writeValueAsString(new MyType("bar")));
Я думаю, я мог бы написать собственный сериализатор, но мне было интересно, является ли это каким-то типом встроенного стандартного поведения. Мой вариант использования заключается в том, что я создаю полезную нагрузку JSON
, которая, как ожидается, будет содержать строковое сообщение, которое само по себе содержит JSON
.
Окружающая среда
Версия Джексона — 2.9.0 с использованием Spring Boot 2 на Java 10.