java - 如何使用 java 在 json 对象中附加键值

标签 java json

我正在使用 org.json.JSONObject 包通过从 db 填充值来创建 JSONArray,我可以从 db 获取值并将它们放入 json 中的键-对,但在程序结束时:键和不附加值,而仅将数组的最后一行转换为 json 对象。我希望将它们附加到最终的 json 中。任何帮助将不胜感激。

  try {
    MobileTestClass_Methods.InitializeConfiguration();
    String sqlQuery = "SELECT id, NAME FROM campaign LIMIT 4; ";
    Connection con = MobileTestClass_Methods.CreateSQLConnection();

    String [][] arr = MobileTestClass_Methods
        .ExecuteMySQLQueryReturnsArrayWithColumnName(con, sqlQuery);
    JSONObject json = new JSONObject();
    int totalrow =arr.length;
    int totalcolumn =arr[0].length;

    System.out.println("row: "+totalrow + " col: "+totalcolumn);

    for(int i=1; i<totalrow; i++) {
        for(int j=0; j<totalcolumn; j++) {
            String key = arr[0][j];
            String value = arr[i][j];
            json.put(key, value);
            System.out.println("Key: "+key + "  value: "+value);
        }
    }

    System.out.println("Json: "+json);

    JSONArray array = new JSONArray();
    array.put(json);

    JSONObject main = new JSONObject();
    main.put("result", array);

    System.out.println("Final Json Array: "+main);
  } catch(Exception e) {
        e.printStackTrace();
        System.out.println(e.getMessage());
  }

输出:

  row: 5 col: 2
  Key: id  value: 25256
  Key: NAME  value: megha_video
  Key: id  value: 32168
  Key: NAME  value: Mukesh_13Aug_vpaid
  Key: id  value: 25258
  Key: NAME  value: vast
  Key: id  value: 32167
  Key: NAME  value: SDK-rtb-hudson-130815
  Json: {"id":"32167","NAME":"SDK-rtb-hudson-130815"}
  Final Json Array: {"result":[{"id":"32167","NAME":"SDK-rtb-hudson-130815"}]}

最佳答案

您的查询结果始终返回键 idNAME,因此您不断地覆盖这些值。

如果你想拥有多个具有 idNAME 属性的对象,你应该使用 JSONArray 并创建嵌套的 JSONObject里面:

// ... previous code

String [][] arr = MobileTestClass_Methods.ExecuteMySQLQueryReturnsArrayWithColumnName(con, sqlQuery);
JSONArray json = new JSONArray ();
int totalrow =arr.length;
int totalcolumn =arr[0].length;

System.out.println("row: "+totalrow + " col: "+totalcolumn);

for(int i=1; i<totalrow; i++)
{
    JSONObject row = new JSONObject();
    for(int j=0; j<totalcolumn; j++)
    {
        String key = arr[0][j];
        String value = arr[i][j];
        row.put(key, value);
        System.out.println("Key: "+key + "  value: "+value);
    }
    json.put(row);
}

// ... rest of the code ...

关于java - 如何使用 java 在 json 对象中附加键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32498872/

相关文章:

java - 从 Json 文件中读取 JsonElement?

java - Android与PC Socket连接

java - 从新上下文绑定(bind)到服务以进行配置更改或从应用程序上下文绑定(bind)?

javascript - 使用 javascript 从 Knockout.Js 读取 Json 数据

javascript - 如何使用 D3 访问对象数组?

javascript - 将字符串转换为有效的 JSON 对象

Java Spring - 管理同步请求的线程

Java:通过 TCP 传输文件

java - 哪个更快——正则表达式匹配还是我自己的匹配函数?

java - jackson 错误意外字符 ('}'(代码 125))