2017-01-23 8 views
0

私はjspで作業しています。 私のJSPはjspは、同じコードでさまざまな方法でjavaマップを出力します。

<%@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>オブジェクトを出力することになっています。 通常はうまく動作しますが、時にはJSONウェイ(コロンを接続することを意味します)をプリントします。

私が期待した結果が

{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}}} 

を返しますが、それは=に接続する他のケース。

私は何が違うのか分かりません。おかげさまで 以下のマップについては

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

+0

これは暗黙的にmap.toString()メソッドを呼び出します。出力が異なる場合は、異なるクラスを使用していることを意味します(別のtoString実装を使用)。 – degr

+0

この質問は時代遅れであり、そのコードに何が間違っていたかを証明する方法はありません。だから私はそれを閉じることが良いと思います –

答えて

0

あなたはきれいに印刷されたマップを得るためにあなたのマップから設定されたエントリでArrays#toString()を使用することができます

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] 

キーの挿入順序を維持したい場合は、 n HashMapの代わりにLinkedHashMapを使用することを検討してください。

+0

あなたの答えをありがとう。しかし、私の質問は、同じフォーマットにするのではなく、異なるフォーマットで印刷する理由でした。しかし、ありがとう。今、私は@degrの返事をチェックしています。 –

関連する問題