如何使用Java附加键-JSON对象中的值 [英] How to append key - values in json object using java

查看:51
本文介绍了如何使用Java附加键-JSON对象中的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am using org.json.JSONObject package to create a JSONArray by filling up values from db, I can get the values from db and put them a key - pair in json, but at the end of the program: key and values are not appended whereas only the last row of array is converted into json object. I want them to be appended in the final json. Any help will be appreciated.

  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,因此您将连续覆盖这些值.

The result of your query returns always the keys id and NAME, so you're overwriting the values continuously.

如果要具有具有idNAME属性的多个对象,则应使用JSONArray并在其中创建嵌套的JSONObject:

If you want to have multiple objects with id and NAME properties you should use a JSONArray and create nested JSONObjects inside:

// ... 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附加键-JSON对象中的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆