有 Java 编程相关的问题?

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

安卓将两个JSON数组的值合并到一个JSONObject java中

我有以下形式的JSON数组:

[6, 7, 8, 9, 10, 11]

[122402538, 12240345, 122496, 122617, 1227473, 1228495]

现在我想将每个Long值与另一个值合并,保持其索引不变,如下所示:

[{"id": 6, "timestamp":122402538}, {"id": 7, "timestamp": 12240345}, {"id": , "timestamp": 12240345},...]

我尝试循环,然后将值添加到JSONObject中,如下所示:

JSONArray array = object.getJSONArray("theFirstArray");
for (int i = 0; i < array.length(); i++){
jo = array.getLong(i);
jsonObject.put("id", jo);
jsonArray.put(jsonObject);
}

JSONArray timestamp = object.getJSONArray("theSecondArray");
 for (int i = 0; i < timestamp .length(); i++){
 Long jos = timestamp .getLong(i);
 jsonObject.put("timeStamp", jos);
 jsonArray.put(jsonObject);
}

但是,不幸的是,它是数组中put的最后一个值

如何将两个数组的两个值合并成一个JSONObject,然后列出所有这些JSONObjects

我还研究了其他问题,即使是从phpsjavascripts,也没有一个能起到帮助

或者有没有一种方法可以使用RxJava2

感谢您的帮助


共 (2) 个答案

  1. # 1 楼答案

    试试这个

     JSONArray array1 = object.getJSONArray("theFirstArray");
        JSONArray array2 = object.getJSONArray("thesecondarray");
        JSONObject finalObject=new JSONObject();
        for (int i = 0; i < array1.length(); i++){
            JSONObject jo=new JSONObject();
            jo.put("id",array1.get(i));
            jo.put("timestamp",array2.get(i));
            finalObject.put(jo);
       }
    
  2. # 2 楼答案

    让我们使用RxJava组合这两个数组

    JSONArray combinedArray = new JSONArray();
    
    
        List<Integer> idList = Arrays.asList(6, 7, 8, 9, 10, 11);
        List<Integer> timestampList = Arrays.asList(122402538, 12240345, 122496, 122617, 1227473, 1228495);
    
        final int[] counter = {0}; // assuming your both array are of same size.
        Observable.fromIterable(idList)
                .map(id -> {
                            JSONObject singleObject = new JSONObject();
                            singleObject.put("id:", id);
                            singleObject.put("timestamp:", timestampList.get(counter[0]));
                            counter[0]++;
                            combinedArray.put(singleObject);
                            return Observable.just(combinedArray);
                        }
                )
                .toList()  //jsonArrayObservable is observable json array, if you want to your later on
                .doOnSuccess(jsonArrayObservable -> Log.d("jsonArrayObservable -> ", combinedArray.toString()))
                .subscribe();
    

    OUTPUT

     jsonArrayObservable -> :[{"id:":6,"timestamp:":122402538},{"id:":7,"timestamp:":12240345},{"id:":8,"timestamp:":122496},{"id:":9,"timestamp:":122617},{"id:":10,"timestamp:":1227473},{"id:":11,"timestamp:":1228495}]
    

    不支持java 8的更新

    Observable.fromIterable(idList)
                .map(new Function<Integer, Object>() {
                         @Override
                         public Object apply(Integer id) throws Exception {
                             JSONObject singleObject = new JSONObject();
                             singleObject.put("id:", id);
                             singleObject.put("timestamp:", timestampList.get(counter[0]));
                             counter[0]++;
                             combinedArray.put(singleObject);
                             return Observable.just(combinedArray);
                         }
                     }
                )
                .toList()  //jsonArrayObservable is observable json array, if you want to your later on
                .doOnSuccess(jsonArrayObservable -> Log.d("jsonArrayObservable -> ", combinedArray.toString()))
                .subscribe();
    

    Output

    enter image description here