我正在学习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
有效载荷。您可以使用Jackson
的ObjectMapper
:
private void writeJson(Object object, HttpServletResponse response) {
final ObjectMapper mapper = new ObjectMapper();
try {
mapper.writeValue(response.getWriter(), object);
} catch (IOException ex) {
}
}