Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android中合并两个JSON数组?_Java_Android_Json_Gson - Fatal编程技术网

Java 如何在Android中合并两个JSON数组?

Java 如何在Android中合并两个JSON数组?,java,android,json,gson,Java,Android,Json,Gson,我有一个JSON响应,如下所示: [{"ProjectID":1,"ProjectName":"Test","UserID":[1,3,5,7],"RSID":[2,4,6,8]}] [{"ProjectID":1,"ProjectName":"Test","RS":[{"UserID":1,"RSID":2},{"UserID":3,"RSID":4},{"UserID":5,"RSID":6},{"UserID":7,"RSID":8} ]}] 但我需要像这样合并它: [{"Projec

我有一个JSON响应,如下所示:

[{"ProjectID":1,"ProjectName":"Test","UserID":[1,3,5,7],"RSID":[2,4,6,8]}]
[{"ProjectID":1,"ProjectName":"Test","RS":[{"UserID":1,"RSID":2},{"UserID":3,"RSID":4},{"UserID":5,"RSID":6},{"UserID":7,"RSID":8}
]}]
但我需要像这样合并它:

[{"ProjectID":1,"ProjectName":"Test","UserID":[1,3,5,7],"RSID":[2,4,6,8]}]
[{"ProjectID":1,"ProjectName":"Test","RS":[{"UserID":1,"RSID":2},{"UserID":3,"RSID":4},{"UserID":5,"RSID":6},{"UserID":7,"RSID":8}
]}]

这有可能做到吗?

没有直接的方法可以做到这一点,您只需要阅读json并自己完成逻辑

您可以使用:来检查JSON结构,因此:

jsonArray = getJSONArray(response.toString()) // the full response; 
jsonObject = jsonArray.getJSONObject(0);
String myProjectID = jsonObject.getString("ProjectID"); 
String myProjectName=jsonObject.getString("ProjectName"); 
  /* userIdArray = jsonObject .getJSONArray("UserID");
 for (int i = 0; i < userIdArray .length(); i++)
{
  //javaArray pushing values JSONObject jsonO = userIdArray .getJSONObject(i);
}

rsIdArray = jsonObject.getJSONArray("RSID");
for (int i = 0; i < rsIdArray .length(); i++)
{

}*/

我还没有测试过它,但是像这样的东西应该可以做到。

没有直接的方法可以做到这一点,你只需要阅读json并自己完成逻辑

i tried to solve your query in plain javascript. hope it helps you.
您可以使用:来检查JSON结构,因此:

jsonArray = getJSONArray(response.toString()) // the full response; 
jsonObject = jsonArray.getJSONObject(0);
String myProjectID = jsonObject.getString("ProjectID"); 
String myProjectName=jsonObject.getString("ProjectName"); 
  /* userIdArray = jsonObject .getJSONArray("UserID");
 for (int i = 0; i < userIdArray .length(); i++)
{
  //javaArray pushing values JSONObject jsonO = userIdArray .getJSONObject(i);
}

rsIdArray = jsonObject.getJSONArray("RSID");
for (int i = 0; i < rsIdArray .length(); i++)
{

}*/
我还没有测试过它,但是像这样的东西应该可以奏效

i tried to solve your query in plain javascript. hope it helps you.

下面的代码将使用Java执行相同的任务:

 JSONParser parser = new JSONParser();
    String oldJSON = "[{\"ProjectID\":1,\"ProjectName\":\"Test\",\"UserID\":[1,3,5,7],\"RSID\":[2,4,6,8]}]";

    JSONObject newJSON = new JSONObject();
    Object obj = parser.parse(oldJSON);
    JSONArray mainArray = (JSONArray) obj;
    JSONObject objects = (JSONObject) mainArray.get(0);

    newJSON.put("ProjectID", objects.get("ProjectID"));
    newJSON.put("ProjectName", objects.get("ProjectName"));

    JSONArray userId = (JSONArray) objects.get("UserID");
    JSONArray rsid = (JSONArray) objects.get("RSID");
    JSONArray newArr = new JSONArray();

    for (int i = 0; i < userId.size(); i++) {
        JSONObject combine = new JSONObject();
        System.out.println("inside array" + userId.get(i));
        combine.put("UserID", userId.get(i));
        combine.put("RSID", rsid.get(i));
        newArr.add(combine);
    }
    newJSON.put("RS", newArr);
    System.out.println("json" + newJSON.toJSONString());
JSONParser=newjsonparser();
字符串oldJSON=“[{\“ProjectID\”:1,“ProjectName\”:“Test\”,“UserID\”:[1,3,5,7],“RSID\”:[2,4,6,8]}];
JSONObject newJSON=新JSONObject();
objectobj=parser.parse(oldJSON);
JSONArray mainArray=(JSONArray)obj;
JSONObject对象=(JSONObject)mainArray.get(0);
newJSON.put(“ProjectID”),objects.get(“ProjectID”);
newJSON.put(“ProjectName”,objects.get(“ProjectName”);
JSONArray userId=(JSONArray)objects.get(“userId”);
JSONArray rsid=(JSONArray)objects.get(“rsid”);
JSONArray newArr=新的JSONArray();
对于(int i=0;i

下面的代码将使用Java执行相同的任务:

 JSONParser parser = new JSONParser();
    String oldJSON = "[{\"ProjectID\":1,\"ProjectName\":\"Test\",\"UserID\":[1,3,5,7],\"RSID\":[2,4,6,8]}]";

    JSONObject newJSON = new JSONObject();
    Object obj = parser.parse(oldJSON);
    JSONArray mainArray = (JSONArray) obj;
    JSONObject objects = (JSONObject) mainArray.get(0);

    newJSON.put("ProjectID", objects.get("ProjectID"));
    newJSON.put("ProjectName", objects.get("ProjectName"));

    JSONArray userId = (JSONArray) objects.get("UserID");
    JSONArray rsid = (JSONArray) objects.get("RSID");
    JSONArray newArr = new JSONArray();

    for (int i = 0; i < userId.size(); i++) {
        JSONObject combine = new JSONObject();
        System.out.println("inside array" + userId.get(i));
        combine.put("UserID", userId.get(i));
        combine.put("RSID", rsid.get(i));
        newArr.add(combine);
    }
    newJSON.put("RS", newArr);
    System.out.println("json" + newJSON.toJSONString());
JSONParser=newjsonparser();
字符串oldJSON=“[{\“ProjectID\”:1,“ProjectName\”:“Test\”,“UserID\”:[1,3,5,7],“RSID\”:[2,4,6,8]}];
JSONObject newJSON=新JSONObject();
objectobj=parser.parse(oldJSON);
JSONArray mainArray=(JSONArray)obj;
JSONObject对象=(JSONObject)mainArray.get(0);
newJSON.put(“ProjectID”),objects.get(“ProjectID”);
newJSON.put(“ProjectName”,objects.get(“ProjectName”);
JSONArray userId=(JSONArray)objects.get(“userId”);
JSONArray rsid=(JSONArray)objects.get(“rsid”);
JSONArray newArr=新的JSONArray();
对于(int i=0;i
在重构现有json对象时,没有直接的方法合并json。处理json并设置如下值

  var myObj = {"ProjectID":1,"ProjectName":"Test","UserID":[1,3,5,7],"RSID":[2,4,6,8]}
    var myArray = [];
     var RS = {};
        var rsuserObj ={};
        for(var key in myObj.UserID){
           rsuserObj["userID"] = myObj.UserID[key];
           rsuserObj["RSID"] = myObj.RSID[key];
           myArray.push(rsuserObj);

        }

    var updatedObj = {"ProjectID":1,"ProjectName":"Test", "RS": myArray};

    console.log(JSON.stringify(updatedObj));

在重构现有json对象时,没有直接的方法合并json。处理json并设置如下值

  var myObj = {"ProjectID":1,"ProjectName":"Test","UserID":[1,3,5,7],"RSID":[2,4,6,8]}
    var myArray = [];
     var RS = {};
        var rsuserObj ={};
        for(var key in myObj.UserID){
           rsuserObj["userID"] = myObj.UserID[key];
           rsuserObj["RSID"] = myObj.RSID[key];
           myArray.push(rsuserObj);

        }

    var updatedObj = {"ProjectID":1,"ProjectName":"Test", "RS": myArray};

    console.log(JSON.stringify(updatedObj));
试试下面的代码

 try {
        String json1 = "[{\"ProjectID\":1,\"ProjectName\":\"Test\",\"UserID\":[1,3,5,7],\"RSID\":[2,4,6,8]}]";
        JSONArray jsonArray1 = new JSONArray(json1);

        JSONObject jsonObject = jsonArray1.optJSONObject(0);
        String key1 = "UserID";
        String key2 = "RSID";
        String keyFinal = "RS";
        JSONArray userIDArray = jsonObject.optJSONArray("UserID");
        JSONArray rsIDArray = jsonObject.optJSONArray(key2);
        jsonObject.remove(key1);
        jsonObject.remove(key2);

        int index = 0;

        JSONArray rsFinalArray = new JSONArray();

        if (userIDArray.length() > rsIDArray.length()) {
            index = userIDArray.length();
        } else {
            index = rsIDArray.length();
        }


        for (int i = 0; i < index; i++) {
            JSONObject rsObject = new JSONObject();
            rsObject.accumulate(key1, userIDArray.opt(i));
            rsObject.accumulate(key2, rsIDArray.opt(i));
            rsFinalArray.put(rsObject);
        }

        jsonObject.accumulate(keyFinal, rsFinalArray);
        JSONArray jsonArrayFinal = new JSONArray();
        jsonArrayFinal.put(jsonObject);
        Log.v("TAG", "result :" + jsonArrayFinal.toString());
    } catch (Exception e) {
        e.printStackTrace();
    }
试试看{
字符串json1=“[{\“ProjectID\”:1,“ProjectName\”:“Test\”,“UserID\”:[1,3,5,7],“RSID\”:[2,4,6,8]}];
JSONArray jsonArray1=新JSONArray(json1);
JSONObject JSONObject=jsonArray1.optJSONObject(0);
字符串key1=“UserID”;
字符串key2=“RSID”;
字符串keyFinal=“RS”;
JSONArray userIDArray=jsonObject.optJSONArray(“UserID”);
JSONArray rsIDArray=jsonObject.optJSONArray(键2);
jsonObject.remove(键1);
jsonObject.remove(键2);
int指数=0;
JSONArray rsFinalArray=新的JSONArray();
if(userIDArray.length()>rsIDArray.length()){
index=userIDArray.length();
}否则{
索引=rsIDArray.length();
}
对于(int i=0;i
尝试下面的代码

 try {
        String json1 = "[{\"ProjectID\":1,\"ProjectName\":\"Test\",\"UserID\":[1,3,5,7],\"RSID\":[2,4,6,8]}]";
        JSONArray jsonArray1 = new JSONArray(json1);

        JSONObject jsonObject = jsonArray1.optJSONObject(0);
        String key1 = "UserID";
        String key2 = "RSID";
        String keyFinal = "RS";
        JSONArray userIDArray = jsonObject.optJSONArray("UserID");
        JSONArray rsIDArray = jsonObject.optJSONArray(key2);
        jsonObject.remove(key1);
        jsonObject.remove(key2);

        int index = 0;

        JSONArray rsFinalArray = new JSONArray();

        if (userIDArray.length() > rsIDArray.length()) {
            index = userIDArray.length();
        } else {
            index = rsIDArray.length();
        }


        for (int i = 0; i < index; i++) {
            JSONObject rsObject = new JSONObject();
            rsObject.accumulate(key1, userIDArray.opt(i));
            rsObject.accumulate(key2, rsIDArray.opt(i));
            rsFinalArray.put(rsObject);
        }

        jsonObject.accumulate(keyFinal, rsFinalArray);
        JSONArray jsonArrayFinal = new JSONArray();
        jsonArrayFinal.put(jsonObject);
        Log.v("TAG", "result :" + jsonArrayFinal.toString());
    } catch (Exception e) {
        e.printStackTrace();
    }
试试看{
字符串json1=“[{\“ProjectID\”:1,“ProjectName\”:“Test\”,“UserID\”:[1,3,5,7],“RSID\”:[2,4,6,8]}];
JSONArray jsonArray1=新JSONArray(json1);
JSONObject JSONObject=jsonArray1.optJSONObject(0);
字符串key1=“UserID”;
字符串key2=“RSID”;
字符串keyFinal=“RS”;
JSONArray userIDArray=jsonObject.optJSONArray(“UserID”);
JSONArray rsIDArray=jsonObject.optJSONArray(键2);
jsonObject.remove(键1);
jsonObject.remove(键2);
int指数=0;
JSONArray rsFinalArray=新的JSONArray();
if(userIDArray.length()>rsIDArray.length()){
index=userIDArray.length();
}否则{
索引=rsIDArray.length();
}
对于(int i=0;i
解析收到的响应JSON并创建您选择的新JSON。如何执行@monishkamble解析收到的响应JSON并创建您选择的新JSON。如何执行@MonishKambleam已使用for循环进行解析我是否需要在循环中使用两个for循环?是这样吗?有时我会得到无穷的循环