杰克逊注释,用于将地图数据转换为 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

}

为什么我在这里得到等号?

您看到的不是JSON,而是Map对象的toString表示。您需要使用JSON串行化库将POJO串行化为JSON有效载荷。您可以使用JacksonObjectMapper:

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

}
}

最新更新