0
我有這樣一個模型:如何爲對象指定特定的串行器?
SomeModel
public Long id;
public String name;
public Integer age;
public String address;
public Profile profile;
在我的模板,我想使這個模型中,只有ID和名稱的簡化版本。
如果我這樣做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());
感謝您的幫助!