有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从数据库查询中重新格式化json

这是我现在的工作

[{
    "year": "2015",
    "org_name": "MOOE",
    "suborg_name": "Forms Expenses",
    "amt": "2",
    "org_id": "4",
    "suborg_id": "24"
}, {
    "year": "2016",
    "org_name": "MOOE",
    "suborg_name": "Forms Expenses",
    "amt": "1",
    "org_id": "4",
    "suborg_id": "24"
}]

我想要这个格式

[{
    "org_name": "MOOE",
    "suborg_name": "Forms Expenses",
    "suborg_id": "24",
    "org_id": "4",
    "Year": [{
        "year": "2015",
        "amt": "2"
    }, {
        "year": "2016",
        "amt": "1"
    }]
}]

以下是我获取当前值的方式:

List<String> list = new ArrayList<String>();
while (rs2.next()) {
    JSONObject json = new JSONObject();

    if (!rs2.getString("suborg_id").isEmpty()) {
        json.put("org_name", org_name);
        json.put("year", year);
        json.put("suborg_name", suborg_name);
        json.put("amt", amt);
        json.put("org_id", org_id);
        json.put("suborg_id", suborg_id);
    }

    finaljson2.put(counter2, json.toString());
    counter2++;
    list.add("" + json + "");
}

//out.println("[" + finaljson2.toString() + "]");
out.println(list);

我加入了if语句,希望它将相同的suborg_id

UPDATE

尝试将年份和金额添加到新数组中,然后再推到类似json的数组中

List<String> list = new ArrayList<String>();
while (rs2.next()) {
    JSONObject json = new JSONObject();
    JSONObject json1 = new JSONObject();

    if (!rs2.getString("suborg_id").isEmpty()) {

        json.put("year", year);
        json.put("amt", amt);


        json.put("org_name", org_name);
        json.put("suborg_name", suborg_name);
        json.put("org_id", org_id);
        json.put("suborg_id", suborg_id);
        json.put("year", json1);
    }

    finaljson2.put(counter2, json.toString());
    counter2++;
    list.add("" + json + "");
}

//out.println("[" + finaljson2.toString() + "]");
out.println(list);

我的输出看起来像:

[{
    "org_name": "MOOE",
    "suborg_name": "Forms Expenses",
    "org_id": "4",
    "suborg_id": "24",
    "year": {
        "year": "2015",
        "amt": "2"
    }
}, {
    "org_name": "MOOE",
    "suborg_name": "Forms Expenses",
    "org_id": "4",
    "suborg_id": "24",
    "year": {
        "year": "20165",
        "amt": "1"
    }
}]

我的目标是获得格式

[{
    "org_name": "MOOE",
    "suborg_name": "Forms Expenses",
    "suborg_id": "24",
    "org_id": "4",
    "Year": [{
        "year": "2015",
        "amt": "2"
    }, {
        "year": "2016",
        "amt": "1"
    }]
}]

共 (1) 个答案

  1. # 1 楼答案

    试试这个

      List<String> list = new ArrayList<String>();
      while (rs2.next()) {
      JSONObject json = new JSONObject();
     if (!rs2.getString("suborg_id").isEmpty()) {
     json.put("org_name", org_name);
     json.put("suborg_name", suborg_name);
     json.put("org_id", org_id);
     json.put("suborg_id", suborg_id);
     json.put("year");  
    
     [{
       json.put("year", year);  
       json.put("amt", amt);
      },{
       json.put("year", year);  
      json.put("amt", amt);
      }]
    
     }
    finaljson2.put(counter2, json.toString());
    counter2++;
    list.add("" + json + "");
    }