我有一个模型:
SomeModel
public Long id;
public String name;
public Integer age;
public String address;
public Profile profile;
在我的模板中,我想渲染这个模型的一个更简单的版本,只有 id 和 name。
如果我这样做Json.toJson(SomeModel.find.findList());
,它将呈现SomeModels
数据库中的列表,但具有完整的表单。
我写了一个只返回 id 和 name 的序列化器,但是我怎么知道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();
}
}
我看过Play中的代码,当然,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());