简体   繁体   English

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

[英]How to convert JSONObject to JSONArray in Android?

I have request something like this.我有这样的要求。

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

but server accepts only this但服务器只接受这个

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

What should I do?我该怎么办? I quite noob about JSON, please help me.我对 JSON 非常菜鸟,请帮助我。

REQ_DATA needs to be a JSONArray. REQ_DATA 需要是一个 JSONArray。 Try implementing something like this尝试实现这样的东西

        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();
        }

You can try:你可以试试:

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);

You don't change a JSONObject to a JSONArray, rather, you create a JSONArray and then add the JSONObject to that array.您不会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
}

You need to send requestAsJSONString to the server.您需要将requestAsJSONString发送到服务器。

Furthermore, I suggest you put the JSON object keys in final fields, like so:此外,我建议您将 JSON 对象键放在最终字段中,如下所示:

static final String KEY_REQ_DATA = "REQ_DATA";

and then use KEY_REQ_DATA in your code instead of using the hardcoded String.然后在代码中使用KEY_REQ_DATA而不是使用硬编码的字符串。

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);

The variables may need a little editing, doing this from a phone but there you go变量可能需要一些编辑,通过手机完成,但你去

Just simple solution without using any hard-coded Strings不使用任何硬编码字符串的简单解决方案

JSONObject currentJson = new JSONObject(yourJsonString); //Your current jsonObject
JSONObject newJsonObject = new JSONObject(); //new jsonObject you want to send to server
newJsonObject.put(currentJson.keys().next().toString(),
           new JSONArray().put(currentJson.getString(currentJson.keys().next().toString())));

This is simple solution for your json string as per server check it这是您的 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();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM