使用循环使用Jackson创建Json字符串

时间:2018-06-20 08:42:02

标签: java json jackson

我有三个String[][]数组,它们的长度可以不同。第二个长度始终是固定的,长度为6,但是第一个长度可以在06之间不同。

我想创建一个Json字符串,其中包含所有这些String数组的数据。到目前为止,它已经过硬编码,但是我意识到一旦长度不再固定,我就会麻烦...

travelgl1.put("Duration", str1[0][0]);
travelgl1.put("Walking time", str1[0][1]);
travelgl1.put("Direction", str1[0][2]);
travelgl1.put("Departure", str1[0][3]);
travelgl1.put("Arrival", str1[0][4]);
travelgl1.put("End station", str1[0][5]);

因此,基本上,我需要一个动态循环,该循环循环遍历String数组并添加该数组中的所有数据。

有没有简单的方法可以做到这一点?我希望将所有三个json对象(来自三个String数组)最后编译成一个大json字符串。

我希望最终结果看起来像这样:

  

[{“ String array 1”:[{“ Duration”:“ 33”,“ Walking time”:“ 8”,“ Direction”:“Åkeshov”,“ Departure”:“ 09:39”,“到达“:” 10:43“,”终点站“:” Sollentuna“},{”持续时间“:” 37“,”步行时间“:” 8“,”方向“:” Alvik“,”出发“:” 09 :43“,”到达“:” 10:51“,”终点站“:” Sollentuna“},{”持续时间“:” 34“,”步行时间“:” 8“,”方向“:” Alvik“, “出发”:“ 09:53”,“到达”:“ 10:58”,“终点站”:“ Sollentuna”},{“持续时间”:“ 36”,“步行时间”:“ 8”,“方向“:”Åkeshov“,”出发“:” 09:59“,”到达“:” 11:06“,”终点站“:” Sollentuna“},{”持续时间“:” 33“,”步行时间“: “ 8”,“方向”:“Åkeshov”,“出发”:“ 10:09”,“到达”:“ 11:13”}]},   {“字符串数组2”:[{“持续时间”:“ 54”,“行走时间”:“ 13”,“方向”:“ Farsta链”,“出发”:“ 09:43”,“到达”:“ 11:13“,”终点站“:” Sollentuna“},{”持续时间“:” 47“,”步行时间“:” 13“,”方向“:” Gullmarsplan“,”出发“:” 09:50“ ,“到达”:“ 11:13”,“终点站”:“ Sollentuna”},{“持续时间”:“ 45”,“步行时间”:“ 13”,“方向”:“ Gullmarsplan”,“出发” :“ 10:00”,“到达”:“ 11:21”,“终点站”:“ Sollentuna”},{“持续时间”:“ 42”,“步行时间”:“ 13”,“方向”:“ Gullmarsplan”,“出发”:“ 10:10”,“到达”:“ 11:28”,“终点站”:“ Sollentuna”},{“持续时间”:“ 45”,“步行时间”:“ 13” ,“方向”:“ Gullmarsplan”,“出发”:“ 09:30”,“到达”:“ 10:51”,“终点站”:“ Sollentuna”}]},   {“ String array 3”:[{“ Duration”:“ 31”,“ Walking time”:“ 12”,“ Direction”:“Hässelbystrand”,“ Departure”:“ 09:45”,“ Arrival”:“ 10:51“,”终点站“:” Sollentuna“},{”持续时间“:” 31“,”步行时间“:” 12“,”方向“:” Alvik“,”出发“:” 09:52“ ,“到达”:“ 10:58”,“终点站”:“ Sollentuna”},{“持续时间”:“ 33”,“步行时间”:“ 12”,“方向”:“Åkeshov”,“出发” :“ 09:58”,“到达”:“ 11:06”,“终点站”:“ Sollentuna”},{“持续时间”:“ 30”,“步行时间”:“ 12”,“方向”:“ Åkeshov”,“出发”:“ 10:08”,“到达”:“ 11:13”,“终点站”:“ Sollentuna”},{“持续时间”:“ 31”,“步行时间”:“ 12” ,“方向”:“Hässelby航路”,“出发”:“ 10:15”,“到达”:“ 11:21”,“终点站”:“索伦蒂纳”}]}]

因此,我真正想要的是根据字符串数组的长度动态创建Json字符串的方法。

提前谢谢!

1 个答案:

答案 0 :(得分:2)

请参考以下代码。

public List<Map<String, String>> myfunction(String str1[][]) {
    List<Map<String, String>> travelgl1 = new ArrayList<Map<String, String>>();
    for (int i = 0; i < str1.length; i++) {
        Map<String, String> map = new HashMap<String, String>();
        for (int j = 0; j < 6; j++) {
            if (j == 0)
                map.put("Duration", str1[i][j]);
            else if (j == 1)
                map.put("Walking time", str1[i][j]);
            else if (j == 2)
                map.put("Direction", str1[i][j]);
            else if (j == 3)
                map.put("Departure", str1[i][j]);
            else if (j == 4)
                map.put("Arrival", str1[i][j]);
            else if (j == 5)
                map.put("End station", str1[i][j]);
        }
        travelgl1.add(map);
    }
    return travelgl1;
}