android - 如何将两个 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();
}
}
});
解决方案
尝试这个,
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");
}
推荐阅读
- spring - 如何将下面给出的 XML bean 转换为 java bean,同样的例子将不胜感激
- javascript - 如何以不同的颜色显示文本的某些部分,即@和}之间的数据应该是不同的颜色
- kubernetes - kubernetes 中的 Janusgraph 无法连接到作为另一个服务运行的 Cassandra
- node.js - 如何在 Node JS 中将 .flv 文件转换为 .mp4
- c# - 跨多个项目的 EntityFramework 上下文或在两个上下文之间加入
- python - 如何提取MAC id?
- java - 第二个参数类型错误。找到'java.lang.String',需要'android.location.Location'
- javascript - 使用吸气剂会提高性能吗?
- wordpress - 主页上的内部链接问题
- android - delphi embarcadero中用于Debug和Release的不同AndroidManifest.template.xml