【问题标题】:Issue with conversion of Map inside a Map into JSON in Java将 Map 中的 Map 转换为 Java 中的 JSON 的问题
【发布时间】:2014-11-19 20:57:58
【问题描述】:

我在 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;
}

现在,当我尝试使用 Jackson API(上面的 sn-p)将此地图转换为 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

内部哈希图没有被完全转换为 JSON 格式。我想要一些东西,以便内部哈希图也可以转换为与外部地图类似的地图。 我可以在任何一方(客户端/服务器)进行更改。我该怎么办?

【问题讨论】:

  • 值列的表属性中你想要的。请证明一个示例输出。
  • @KumarKailash 更新了问题。

标签: java javascript json hashmap jackson


【解决方案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);
            });
         }
    });
}

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 2016-10-31
    • 2016-02-02
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多