如何在Android中将JSONObject转换为JSONArray?

时间:2016-03-23 08:58:13

标签: android arrays jsonobject

我要求这样的事情。

{"REQ_DATA":
    {"CLPH_NO":"010123456789","USE_INTT_NO":""}
}

但服务器只接受此

{"REQ_DATA":
    [{"CLPH_NO":"010123456789","USE_INTT_NO":""}]
}

我该怎么办?我对JSON非常赞不绝口,请帮助我。

6 个答案:

答案 0 :(得分:2)

REQ_DATA需要是JSONArray。尝试实现类似这样的东西

        try {

          JSONObject object = new JSONObject();
          JSONArray requiredDataArray = new JSONArray();
          JSONObject data = new JSONObject();
          data.put("CLPH_NO", "010123456789");
          data.put("USE_INTT_NO", "");
          requiredDataArray.put(data);
          object.put("REQ_DATA", requiredDataArray);
          Log.d("JSON", object.toString());

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

答案 1 :(得分:1)

您可以尝试:

JSONObject fromRequest = request.getJSONObject();// given from request
JSONObject toServer = new JSONObject();
JSONArray arr = new JSONArray();
arr.put(fromRequest.get("REQ_DATA"));
toServer.put("REQ_DATA", arr);

答案 2 :(得分:1)

您没有将JSONObject更改为JSONArray,而是创建一个JSONArray,然后将JSONObject添加到该数组。

try {
    JSONObject reqData = new JSONObject();
    reqData.put("CLPH_NO", "010123456789");
    reqData.put("USE_INTT_NO", "");

    JSONArray array = new JSONArray();
    array.put(reqData);
    JSONObject request = new JSONObject();
    request.put("REQ_DATA", reqData);

    String requestAsJSONString = request.toString();

    // call web service

} catch (JSONException e) {
    // handle exception
}

您需要将requestAsJSONString发送到服务器。

此外,我建议您将JSON对象键放在最终字段中,如下所示:

static final String KEY_REQ_DATA = "REQ_DATA";

然后在代码中使用KEY_REQ_DATA,而不是使用硬编码的字符串。

答案 3 :(得分:1)

Jsonarray array = new Jsonarray();
Jsonobject insidearray = new jsonobject;

insidearray.put("CLPH_NO", "010123456789");
insidearray.put("USE_INTT_NO", "");

array.put(insidearray);

Jsonobject object = new Jsonobject();

object.put("REQ_DATA",array);

变量可能需要一点编辑,从手机上执行此操作但是你去了

答案 4 :(得分:1)

只需简单的解决方案,无需使用任何硬编码的字符串

   public void showTimePickerDialog(View v) {
    DialogFragment newFragment = new TimePickerFragment();
    newFragment.show(getSupportFragmentManager(), "timePicker");
}

答案 5 :(得分:1)

这是根据服务器检查它的json字符串的简单解决方案

    JSONObject jo = new JSONObject();

    try {
        jo.put("CLPH_NO", "010123456789");
        jo.put("USE_INTT_NO", "");
    } catch (Exception e) {
    }

    JSONArray ja = new JSONArray();
    ja.put(jo);

    JSONObject final_jo = new JSONObject();

    try {
        final_jo.put("REQ_DATA", ja);
    } catch (Exception e) {
    }

    Toast.makeText(getApplicationContext(),final_jo.toString(),Toast.LENGTH_LONG).show();