首页 > 解决方案 > 如何将两个 JSON 数组合并为一个 JSON 数组?

问题描述

在下面的代码中,我有一个标记为开关状态。如果默认选中条件在包含 JSON 数组列表中

对于 off 包含 JSON 数组列表。

现在有一个名为保存的按钮。如果我按下保存按钮想要将两个 JSON 数组组合成单个 JSON 数组想要作为参数传递。

请查看我的代码,让我知道错误在哪里。

标记开关:

simpleSwitch1.setOnToggledListener(new OnToggledListener() {
            @Override
            public void onSwitched(LabeledSwitch labeledSwitch, boolean isChecked) {
                //mLigthOnOff.setOn(true);
                String isOn = "";

                if (isChecked) {
                    getCCTAndIntensityValues(API.SET_APP_SCHEDULE);



                }else {
                    getCCTAndIntensityValues(API.SET_APP_SCHEDULE);


                }
            }
        });
    }


public void getCCTAndIntensityValues (String schedulerType) {

            if (simpleSwitch1.isOn()) {
                int cct1 = Integer.parseInt(String.valueOf(mCCT1.getProgress()));
                int cct2 = Integer.parseInt(String.valueOf(mCCT2.getProgress()));
                int cct3 = Integer.parseInt(String.valueOf(mCCT3.getProgress()));
                int cct4 = Integer.parseInt(String.valueOf(mCCT4.getProgress()));
                int cct5 = Integer.parseInt(String.valueOf(mCCT5.getProgress()));
                int cct6 = Integer.parseInt(String.valueOf(mCCT6.getProgress()));
                int cct7 = Integer.parseInt(String.valueOf(mCCT7.getProgress()));
                int cct8 = Integer.parseInt(String.valueOf(mCCT8.getProgress()));
                int cct9 = Integer.parseInt(String.valueOf(mCCT9.getProgress()));
                int cct10 = Integer.parseInt(String.valueOf(mCCT10.getProgress()));
                int cct11 = Integer.parseInt(String.valueOf(mCCT11.getProgress()));
                int cct12 = Integer.parseInt(String.valueOf(mCCT12.getProgress()));


                int intensity1 = Integer.parseInt(String.valueOf(mIntenisty1.getProgress()));
                int intensity2 = Integer.parseInt(String.valueOf(mIntenisty2.getProgress()));
                int intensity3 = Integer.parseInt(String.valueOf(mIntenisty3.getProgress()));
                int intensity4 = Integer.parseInt(String.valueOf(mIntenisty4.getProgress()));
                int intensity5 = Integer.parseInt(String.valueOf(mIntenisty5.getProgress()));
                int intensity6 = Integer.parseInt(String.valueOf(mIntenisty6.getProgress()));
                int intensity7 = Integer.parseInt(String.valueOf(mIntenisty7.getProgress()));
                int intensity8 = Integer.parseInt(String.valueOf(mIntenisty8.getProgress()));
                int intensity9 = Integer.parseInt(String.valueOf(mIntenisty9.getProgress()));
                int intensity10 = Integer.parseInt(String.valueOf(mIntenisty10.getProgress()));
                int intensity11 = Integer.parseInt(String.valueOf(mIntenisty11.getProgress()));
                int intensity12 = Integer.parseInt(String.valueOf(mIntenisty12.getProgress()));

                try {

                    ArrayList<Integer> number = new ArrayList<>();
                    number.add(intensity1);
                    number.add(intensity2);
                    number.add(intensity3);
                    number.add(intensity4);
                    number.add(intensity5);
                    number.add(intensity6);
                    number.add(intensity7);
                    number.add(intensity8);
                    number.add(intensity9);
                    number.add(intensity10);
                    number.add(intensity11);
                    number.add(intensity12);

                    numberJson = new JSONArray();

                    for (int i = 0; i < number.size(); i++) {

                        numberJson.put(i, number.get(i));

                    }

                    ArrayList<Integer> cctvalues = new ArrayList<>();
                    cctvalues.add(cct1);
                    cctvalues.add(cct2);
                    cctvalues.add(cct3);
                    cctvalues.add(cct4);
                    cctvalues.add(cct5);
                    cctvalues.add(cct6);
                    cctvalues.add(cct7);
                    cctvalues.add(cct8);
                    cctvalues.add(cct9);
                    cctvalues.add(cct10);
                    cctvalues.add(cct11);
                    cctvalues.add(cct12);


                    cctJsonArray = new JSONArray();
                    if (cctJsonArray != null) {
                        for (int i = 0; i < cctvalues.size(); i++) {

                            cctJsonArray.put(i, cctvalues.get(i));

                        }
                    }


                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
            else{

                int cct11 = Integer.parseInt(String.valueOf(mCCT1.getProgress()));
                int cct21 = Integer.parseInt(String.valueOf(mCCT2.getProgress()));
                int cct31 = Integer.parseInt(String.valueOf(mCCT3.getProgress()));
                int cct41 = Integer.parseInt(String.valueOf(mCCT4.getProgress()));
                int cct51 = Integer.parseInt(String.valueOf(mCCT5.getProgress()));
                int cct61 = Integer.parseInt(String.valueOf(mCCT6.getProgress()));
                int cct71 = Integer.parseInt(String.valueOf(mCCT7.getProgress()));
                int cct81 = Integer.parseInt(String.valueOf(mCCT8.getProgress()));
                int cct91 = Integer.parseInt(String.valueOf(mCCT9.getProgress()));
                int cct101 = Integer.parseInt(String.valueOf(mCCT10.getProgress()));
                int cct111 = Integer.parseInt(String.valueOf(mCCT11.getProgress()));
                int cct121 = Integer.parseInt(String.valueOf(mCCT12.getProgress()));


                int intensity1 = Integer.parseInt(String.valueOf(mIntenisty1.getProgress()));
                int intensity2 = Integer.parseInt(String.valueOf(mIntenisty2.getProgress()));
                int intensity3 = Integer.parseInt(String.valueOf(mIntenisty3.getProgress()));
                int intensity4 = Integer.parseInt(String.valueOf(mIntenisty4.getProgress()));
                int intensity5 = Integer.parseInt(String.valueOf(mIntenisty5.getProgress()));
                int intensity6 = Integer.parseInt(String.valueOf(mIntenisty6.getProgress()));
                int intensity7 = Integer.parseInt(String.valueOf(mIntenisty7.getProgress()));
                int intensity8 = Integer.parseInt(String.valueOf(mIntenisty8.getProgress()));
                int intensity9 = Integer.parseInt(String.valueOf(mIntenisty9.getProgress()));
                int intensity10 = Integer.parseInt(String.valueOf(mIntenisty10.getProgress()));
                int intensity11 = Integer.parseInt(String.valueOf(mIntenisty11.getProgress()));
                int intensity12 = Integer.parseInt(String.valueOf(mIntenisty12.getProgress()));

                try {

                    ArrayList<Integer> number = new ArrayList<>();
                    number.add(intensity1);
                    number.add(intensity2);
                    number.add(intensity3);
                    number.add(intensity4);
                    number.add(intensity5);
                    number.add(intensity6);
                    number.add(intensity7);
                    number.add(intensity8);
                    number.add(intensity9);
                    number.add(intensity10);
                    number.add(intensity11);
                    number.add(intensity12);

                    numberJson1 = new JSONArray();

                    for (int i = 0; i < number.size(); i++) {

                        numberJson1.put(i, number.get(i));

                    }

                    ArrayList<Integer> cctvalues = new ArrayList<>();
                    cctvalues.add(cct11);
                    cctvalues.add(cct21);
                    cctvalues.add(cct31);
                    cctvalues.add(cct41);
                    cctvalues.add(cct51);
                    cctvalues.add(cct61);
                    cctvalues.add(cct71);
                    cctvalues.add(cct81);
                    cctvalues.add(cct91);
                    cctvalues.add(cct101);
                    cctvalues.add(cct111);
                    cctvalues.add(cct121);


                    cctJsonArray1 = new JSONArray();
                    if (cctJsonArray1 != null) {
                        for (int i = 0; i < cctvalues.size(); i++) {

                            cctJsonArray1.put(i, cctvalues.get(i));

                        }
                    }


                } catch (Exception ex) {
                    ex.printStackTrace();
                }

            }
        }



mSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                schedulerType=API.SET_APP_SCHEDULE;

                RequestAsyntask mRequestAsyntask = new RequestAsyntask(mContext);

                try {
                    RequestBody requestBody = new FormEncodingBuilder()
                            .add("light_id", lightid)
                            .add("intensity", numberJson.toString()+numberJson1.toString())
                            .add("cct",cctJsonArray.toString()+cctJsonArray1.toString() ).build();

                    Request request = new Request.Builder().url(BASE_URL + schedulerType).post(requestBody).build();

                    mRequestAsyntask.runDataRetriver(request, false);
                    Log.i(TAG, "Sending---" + BASE_URL + schedulerType + "\n" + "light_id:" + lightid + "\n" + "intensity:" + numberJson.toString()+numberJson1.toString() + "\n" + "cct:" + cctJsonArray.toString()+cctJsonArray1.toString());

                    mRequestAsyntask.setResponseListener(new ResponseCallback() {
                        @Override
                        public void success(String response) {
                            Log.i(TAG, "Response:" + response);

                        }
                    });
                } catch (Exception e) {
                    e.printStackTrace();
                }


            }
        });

标签: androidarrays

解决方案


尝试这个,

public JSONArray getMergeJson(ArrayList<JSONArray> abc){
  JSONArray result=null;
  JSONObject obj= new JSONObject();
  obj.put("key",result);
  for(JSONArray tmp:abc){
    for(int i=0;i<tmp.length();i++){
     obj.append("key", tmp.getJSONObject(i));   ;
    }

   }
   return obj.getJSONArray("key");
 }

推荐阅读