У меня есть модель, как:Как указать определенный Сериализатор для объекта?
SomeModel
public Long id;
public String name;
public Integer age;
public String address;
public Profile profile;
В моих шаблонах, я хотел бы, чтобы сделать более простую версию этой модели, только идентификатор и имя.
Если я сделаю Json.toJson(SomeModel.find.findList());
, он отобразит список SomeModels
в базе данных, но с полной формой.
Я написал сериализатор, который просто возвращает id и имя, но как я могу сообщить Json.toJson
, чтобы использовать этот сериализатор?
public class SimpleSomeModelSeralizer extends JsonSerializer<SomeModel> {
@Override
public void serialize(SomeModel someModel, JsonGenerator generator, SerializerProvider serializer) throws IOException,JsonProcessingException {
if (someModel == null) return;
generator.writeStartObject();
generator.writeNumberField("id", someModel.getId());
generator.writeStringField("name", someModel.getName());
generator.writeEndObject();
}
}
Я посмотрел на код в игре, и, конечно же, toJson простая версия, которая не принимает некоторые сериалайзер в качестве параметра, поэтому я предполагаю, что я должен написать длинный код, но я не знаю, что/как это сделать.
Код в игре Json.toJson:
public static JsonNode toJson(final Object data) {
try {
return new ObjectMapper().valueToTree(data);
} catch(Exception e) {
throw new RuntimeException(e);
}
}
Можно ли сделать что-то вроде этого? :
new ObjectMapper().useSerializer(SimpleSomeModelSeralizer.class).valueToTree(SomeModel.find.findList());
Благодарим за помощь!