Vic*_* M. 7 java jackson playframework playframework-2.0
我正在编写一个典型的Play Framework应用程序,我希望使用Jackson从Controller的方法返回JsonNode.
这就是我现在正在做的事情:
public static Result foo() {
MyPojoType myPojo = new myPojo();
String tmp = new ObjectMapper().writerWithView(JSONViews.Public.class).writeValueAsString(myPojo);
JsonNode jsonNode = Json.parse(tmp);
return ok(jsonNode);
}
Run Code Online (Sandbox Code Playgroud)
是否可以避免"String tmp"复制并使用视图直接从MyPojoType转换为JsonNode?
也许我可以使用ObjectMapper.valueToTree,但我不知道如何为它指定一个JSonView.
经过更多调查,这就是我最终所做的以避免多余的工作:
public Result toResult() {
Content ret = null;
try {
final String jsonpayload = new ObjectMapper().writerWithView(JsonViews.Public.class).writeValueAsString(payload);
ret = new Content() {
@Override public String body() { return jsonpayload; }
@Override public String contentType() { return "application/json"; }
};
} catch (JsonProcessingException exc) {
Logger.error("toResult: ", exc);
}
if (ret == null)
return Results.badRequest();
return Results.ok(ret);
}
Run Code Online (Sandbox Code Playgroud)
总之:ok、badRequest 等方法接受 play.mvc.Content 类。然后,只需使用它来包装序列化的 json 对象即可。
归档时间: |
|
查看次数: |
1610 次 |
最近记录: |