【发布时间】:2015-09-23 22:05:57
【问题描述】:
这是端点 /foo/bar 预期的响应正文。
如您所见,这是嵌套的json,因此对于每个级别我都需要Java object。构建这个的有效方法是什么?我正在使用Spring 4.1,而后者又使用Jackson 到serialize POJO。
{
"user": {
"status": {
"state": "active",
"message": [
"registered on 01.10.2015"
]
}
},
"features": {
"xbox": {
"state": "enabled",
"message": [
"foo",
"bar"
]
},
"playstation": {
"state": "disabled",
"message": [
"hello ",
"world"
]
}
}
}
这是我的想法
@RequestMapping("foo/bar")
@ResponseBody
public Result getData(long id){
Result result = getUserData(id);
return result;
}
public class Result {
private User user;
private List<Feature> features;
//getters and setters
}
public class Status {
private State state;
private Message messages;
//getters and setteers
}
public class State {
private String state;
//getters and setters
}
public class Message {
private List<String> messages;
//getters and setters
}
同样对于“features”节点,我会为Json对象的每一层构造Java POJO。我知道使用 objectMapper 和 JsonNode 但想知道是否可以使用 java 对象有效地构造嵌套的 json。
【问题讨论】:
-
“高效”是什么意思?假设它有效,您为什么认为您当前的设计不是“高效”的?
-
@kryger:Pojo 太多,只有一个字段。
-
我认为您的建议是进行此序列化的最干净和正确的方法,因为当您最后将此 json 序列化为 POJO 时,您将拥有 POJO 而不是 JsonObjects,并且您可以轻松访问方法和属性在 POJO 中。这就是我的想法。
标签: spring spring-mvc jackson