私は次のようなモデルを持っています:
SomeModel
public Long id;
public String name;
public Integer age;
public String address;
public Profile profile;
私のテンプレートでは、このモデルのより単純なバージョンをレンダリングしたいと思います。IDと名前のみです。
私がそう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のPlayのコード:
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());