【问题标题】:create a JSON file in java with array用数组在java中创建一个JSON文件
【发布时间】:2018-08-06 08:19:14
【问题描述】:

我使用 JSON-simple-1.1.1,我想创建一个这样的 JSON 文件:

    {
       "data": [
           [
               "1",
               "YES",
               "sp_1",
               "1",
               "xxx"
           ],
           [
               "2",
               "NO",
               "sp_2",
               "2",
               "yyyy"
           ],
           [
               "3",
               "YES",
               "sp_3",
               "2",
               "zzzz"
           ]
       ]
   }

我尝试使用JSONObjectJSONArray,但我无法解决如何创建像上面这样的多数组

【问题讨论】:

标签: java json multidimensional-array


【解决方案1】:

一个小帮手让生活更轻松:

public static JSONArray jsonArray(Object... values) {
    JSONArray arr = new JSONArray();
    arr.addAll(Arrays.asList(values));
    return arr;
}

然后:

JSONObject obj = new JSONObject();
obj.put("data", jsonArray(jsonArray("1", "YES", "sp_1", "1", "xxx"),
                          jsonArray("2", "NO" , "sp_2", "2", "yyyy"),
                          jsonArray("3", "YES", "sp_3", "2", "zzzz")));
System.out.println(obj.toJSONString());

输出

{"data":[["1","YES","sp_1","1","xxx"],["2","NO","sp_2","2","yyyy"],["3","YES","sp_3","2","zzzz"]]}

【讨论】:

  • 感谢安德烈亚斯,你的例子很完美。我做了一点改动,因为在我的情况下,内部数组是数据库中的行,所以我不知道我找到了多少行。但是在你的帮助下修改它很简单。
【解决方案2】:

我的问题写得不好。我没有解释从数据库中读取的行,因此我不知道找到了多少行。内部数组是动态的。

在 Andreas 的帮助下,我找到了这个解决方案:

public static JSONArray jsonArray(Object... values) {
    JSONArray arr = new JSONArray();
    arr.addAll(Arrays.asList(values));
    return arr;        
}

然后:

JSONObject jo = new JSONObject();
    JSONArray ja = new JSONArray();

    // loop to database row. To simplify code example write some database row found...
    ja.add(jsonArray("1", "YES", "sp_1", "1", "xxx"));
    ja.add(jsonArray("2", "YES", "sp_1", "1", "xxx"));
    ja.add(jsonArray("3", "YES", "sp_1", "1", "xxx"));


    jo.put("data", ja );  
    System.out.print(jo);

输出:

{"data":[["1","YES","sp_1","1","xxx"],["2","YES","sp_1","1","xxx"],["3","YES","sp_1","1","xxx"]]}

感谢大家,对我不清楚的问题深表歉意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 2015-02-28
    • 2015-07-05
    相关资源
    最近更新 更多