2014-09-25 53 views
2

我在Java中的樹形圖,其具有結構像下面這樣:問題與地圖的轉換一個地圖內成JSON在Java中

public static Map<String, Map<String, Integer>> testMap = new TreeMap<String, Map<String, Integer>>(); 

public String getTestMapInJson(Map<String, Map<String, Integer>> testMap){ 
ObjectMapper mapper = new ObjectMapper(); 
String testMapInJson = mapper.writeValueAsString(testMap); 
return testMapInJson; 
} 

現在,當我試圖用傑克遜API這個地圖JSON轉換(上面的代碼片斷),我得到這樣的數據,我想在HTML表格中填充這些數據。

[ 
{ 
    "key": "1.1.1.1", 
    "value": { 
     "string1": 500, 
     "string2": 400 
    } 
}, 
{ 
    "key": "2.2.2.2", 
    "value": { 
     "string1": 500, 
     "string2": 400 
    } 
} 
] 

HTML表輸出是這樣的:

IP Address Value 
1.1.1.1  [object Object] 
2.2.2.2  [object Object] 

我希望它是這樣的:

IP Address Value 
1.1.1.1  String1 count1 
      String2 count2 
2.2.2.2  String1 count1 
      String2 count2 

內部HashMap中沒有得到確切轉換成JSON格式。我想要的東西,以便內部散列映射也轉換爲類似的地圖,如外部地圖。 我可以在任何一方(客戶端/服務器)進行更改。我該怎麼辦?

+1

您在值列的表屬性的願望。請證明一個示例輸出。 – 2014-09-25 07:11:19

+0

@KumarKailash更新了問題。 – isahilarora 2014-09-25 07:22:48

回答

1
var resp = [ 
{ 
    "ip": "1.1.1.1", 
    "data": { 
     "string1": 500, 
     "string2": 400 
    } 
}, 
{ 
    "ip": "2.2.2.2", 
    "data": { 
     "string1": 500, 
     "string2": 400 
    } 
} 
] 

訪問對象:

for(var obj : resp) { 
    $.each(obj, function(key,value){ 
     alert(key + "==" + value); 
     if(key == "data") { 
      $.each(value, function(innerKey, innerVal) { 
       alert(innerKey + "===" + innerVal); 
      }); 
     } 
    }); 
} 

要設計表格:

var table = $("<table>"); 
//header 
var header = $("<tr>").append($("<th>").text("IP Address")).append($("<th>").text("Value")); 

for(var obj : resp) { 
    $.each(obj, function(key,value){ 
     var isFirst = true; 
     if(key == "data") { 
      $.each(value, function(innerKey, innerVal) { 
       var tr; 
       if(isFirst) { 
        // ip address and value 
        tr = $("<tr>").append($("<td>").text(value)).append($("<td>").text(innerKey + " " + innerValue)); 
        isFirst = false; 
       } else { 
        // blank and value 
        tr = $("<tr>").append($("<td>").text("")).append($("<td>").text(innerKey + " " + innerValue)); 
       } 
       table.append(tr); 
      }); 
     } 
    }); 
}