我需要将地图传回 Web 应用程序。
我习惯于将地图封装在 JSONObject 中
但是因为我使用的是 Spring 和 Jackson Haus。
有没有更简单的方法来维护 pojo?我可以只注释 MAP 吗?
我需要将地图传回 Web 应用程序。
我习惯于将地图封装在 JSONObject 中
但是因为我使用的是 Spring 和 Jackson Haus。
有没有更简单的方法来维护 pojo?我可以只注释 MAP 吗?
杰克逊有com.fasterxml.jackson.core.JsonNode
,和特定的亚型一样ObjectNode
。这些形成所谓的Tree Model
,这是用 Jackson 处理 JSON 的 3 种方法之一——其他一些库(如org.json
)只提供这种方式。
所以你应该可以JsonNode
改用;使用org.json
库没有什么意义;它很慢,并且 API 已经过时。
或者,您可以只使用java.util.Map
, 并将其返回。Jackson 可以很好地处理标准List
s、 s 和其他 JDK 类型。Map
如果您需要操作输出,即您不想提供可以使用JSonArray 的对象的所有字段:
@RequestMapping(value = "/api/users", method = RequestMethod.GET)
public
@ResponseBody
String listUsersJson(ModelMap model) throws JSONException {
JSONArray userArray = new JSONArray();
for (User user : userRepository.findAll()) {
JSONObject userJSON = new JSONObject();
userJSON.put("id", user.getId());
userJSON.put("firstName", user.getFirstName());
userJSON.put("lastName", user.getLastName());
userJSON.put("email", user.getEmail());
userArray.put(userJSON);
}
return userArray.toString();
}
使用此处的示例
否则,如果您将 jackson 添加到依赖项并设置带有@ResponseBody
响应注释的控制器方法,则会自动映射到 JSON。在这里查看一个简单的例子。