6

我需要将地图传回 Web 应用程序。

我习惯于将地图封装在 JSONObject 中

http://json.org/java/

但是因为我使用的是 Spring 和 Jackson Haus。

有没有更简单的方法来维护 pojo?我可以只注释 MAP 吗?

4

2 回答 2

6

杰克逊有com.fasterxml.jackson.core.JsonNode,和特定的亚型一样ObjectNode。这些形成所谓的Tree Model,这是用 Jackson 处理 JSON 的 3 种方法之一——其他一些库(如org.json)只提供这种方式。

所以你应该可以JsonNode改用;使用org.json库没有什么意义;它很慢,并且 API 已经过时。

或者,您可以只使用java.util.Map, 并将其返回。Jackson 可以很好地处理标准Lists、 s 和其他 JDK 类型。Map

于 2013-09-25T17:39:11.287 回答
2

如果您需要操作输出,即您不想提供可以使用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。在这里查看一个简单的例子。

于 2013-09-24T11:18:06.887 回答