jsp使用相同的代码以不同的方式打印java地图。

时间:2017-01-23 09:18:22

标签: java json jsp hashmap

我正在使用jsp。 我的jsp看起来像......

<%@page import="net.ion.ice.sp.shard.session.SessionManager"%>
<%@page import="net.ion.ice.sp.common.bean.user.Customer"%>
<%@ page language="java" contentType="application/json; charset=UTF-8" pageEncoding="UTF-8"%>
<%
    Customer customer = SessionManager.getSessionUser(request.getParameter("session_id")) ;
    out.println(customer.getSessionDataMap()) ;
%>
很简单。这段代码应该打印java Map<String, Object> Object。 通常工作正常,但有时会打印JSON方式(意思是kolon连接)。

我期望的结果是

{default={CREATED={date=21, day=1, hours=11, minutes=10, month=2, nanos=0, seconds=13, time=1458526213000, timezoneOffset=-540, year=116}}}

有时会返回

{default={CREATED={"date":21,"day":1,"hours":11,"minutes":10,"month":2,"nanos":0,"seconds":13,"time":1458526213000,"timezoneOffset":-540,"year":116}}}

您可以看到某些字符串与:相关联,但另一种情况则与=相关联。

我不知道是什么造成了不同。 感谢。

1 个答案:

答案 0 :(得分:0)

您可以将Arrays#toString()与地图中的条目集一起使用,以获得整齐打印的地图:

ifx-dto\target\index-generator-related-temp-classes

对于以下地图:

out.println(Arrays.toString(customer.getSessionDataMap().entrySet().toArray()));

这会产生以下输出:

Map<String, String> map = new HashMap<>();
map.put("one",   "first value");
map.put("two",   "second value");
map.put("three", "third value");

System.out.println(Arrays.toString(map.entrySet().toArray()));

请注意,如果您想维护密钥的广告订单顺序,可以考虑使用[two=second value, one=first value, three=third value] 代替LinkedHashMap