Аннотация Джексона для преобразования картографических данных в значения JSON

#java #json #jackson

Вопрос:

Я изучаю библиотеку Джексона и пытался с помощью картографических данных преобразовать ее в JSON, но я получаю знак равенства в своих данных json

  Map<Integer,String> map=new HashMap();
 map.put(id  , "a_set.jsp?action=start");
 map.put(id  , "password_change.jsp?action=edit");
 map.put(id  , "logging.jsp?action=start");
 map.put(id  , "about.jsp");
 writeJson(map,resp);
 

а метод writeJson-это

 @JsonAnyGetter
private void writeJson(Object object, HttpServletResponse response) {
    try {
        response.getWriter().write(object.toString());
    } catch (IOException ex) {
            ProTrace.exception( CLASS_NAME   "Could not write to response", ex);

    }
}
 

Выход есть :

 {
0=a_webuihost_set.jsp?action=start,
1=password_change.jsp?action=edit,
2=logging.jsp?action=start,
3=about.jsp
 

}

Почему я получаю здесь знак равенства?

Ответ №1:

То, что вы видите, — это не JSON что иное toString , как представление Map объекта. Вам необходимо использовать JSON библиотеку сериализации для сериализации полезной POJO JSON нагрузки. Вы можете использовать Jackson ObjectMapper :

 private void writeJson(Object object, HttpServletResponse response) {
    final ObjectMapper mapper = new ObjectMapper();
    try {
        mapper.writeValue(response.getWriter(), object);
    } catch (IOException ex) {
        
    }
}