Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 创建一个JSON对象数组_Android_Json - Fatal编程技术网

Android 创建一个JSON对象数组

Android 创建一个JSON对象数组,android,json,Android,Json,我需要为Arraylist创建一个JSON对象。下面是代码 public boolean submitOrder(ArrayList<OrderDetailsData> orderList) { serUri = "lists.json"; method = "post"; JSONObject jsonObject = new JSONObject(); JSONObject json = new JSONOb

我需要为Arraylist创建一个JSON对象。下面是代码

public boolean submitOrder(ArrayList<OrderDetailsData> orderList) {

        serUri = "lists.json";
        method = "post";


        JSONObject jsonObject = new JSONObject();

        JSONObject json = new JSONObject();

        JSONArray array = new JSONArray();
        try {
            for (int i = 0; i < orderList.size(); i++) {
                json.put("orderno", orderList.get(i).getOrderNumber()
                        .toString());
                json.put("tableno", orderList.get(i).getTableNumber()
                        .toString());
                json.put("itemname", orderList.get(i).getItemName().toString());
                json.put("amount", orderList.get(i).getAmount().toString());

                json.put("ordstatus", orderList.get(i).getOrderStatus()
                        .toString());
                array.put(json);



            }

         catch (JSONException je) {
            return false;
        }

        try {

            jsonObject.put("list", array);
        } catch (JSONException je) {
            return false;
        }

        WebServiceAsyncTask webServiceTask = new WebServiceAsyncTask();
        webServiceTask.execute(serUri, method,jsonObject, this);
        return true;
    }

上面的对象每行只有最后一项。

小错误

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

                JSONObject json = new JSONObject(); // update here

                json.put("orderno", orderList.get(i).getOrderNumber()
                        .toString());
                json.put("tableno", orderList.get(i).getTableNumber()
                        .toString());
                json.put("itemname", orderList.get(i).getItemName().toString());
                json.put("amount", orderList.get(i).getAmount().toString());

                json.put("ordstatus", orderList.get(i).getOrderStatus()
                        .toString());
                array.put(json);



            }

         catch (JSONException je) {
            return false;
        }
试试看{
对于(int i=0;i
小错误

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

                JSONObject json = new JSONObject(); // update here

                json.put("orderno", orderList.get(i).getOrderNumber()
                        .toString());
                json.put("tableno", orderList.get(i).getTableNumber()
                        .toString());
                json.put("itemname", orderList.get(i).getItemName().toString());
                json.put("amount", orderList.get(i).getAmount().toString());

                json.put("ordstatus", orderList.get(i).getOrderStatus()
                        .toString());
                array.put(json);



            }

         catch (JSONException je) {
            return false;
        }
试试看{
对于(int i=0;i
您的
JSONObject json=new JSONObject();
应该在循环中

此外,您不应该每次都执行get(i)来访问属性(为了性能)。您可以使用for循环的另一个构造:

for (OrderDetailsData data : orderList) {
  JSONObject json = new JSONObject();
  json.put("orderno", data.getOrderNumber().toString());
  // ...
}

最后,也许您应该考虑从OrtDebug数据中读取/写入JSON对象的功能,以便可以重用其他WebServices中的代码。

< P>您的代码> JSONTRONSOR JSON=新JSONObjutter();应该在循环内。< /P> 此外,您不应该每次都执行get(i)来访问属性(为了性能)。您可以使用for循环的另一个构造:

for (OrderDetailsData data : orderList) {
  JSONObject json = new JSONObject();
  json.put("orderno", data.getOrderNumber().toString());
  // ...
}

最后,也许您应该考虑从OrtDebug数据中读取/写入JSON对象,以便可以重用其他WebServices中的代码。

< p>您需要在for循环中实例化JSON对象。

您需要在for循环中实例化JSON对象。< /p> < p>看,我正尝试使用GSON LIB,TR。我没做过测试,应该没问题

以这种方式从Json字符串到Json对象:

String jsonStr = "{\"a\": \"A\"}";

Gson gson = new Gson();
JsonElement element = gson.fromJson (jsonStr, JsonElement.class);
JsonObject jsonObj = element.getAsJsonObject();
对于您的代码,这应该可以正常工作:

public boolean submitOrder(ArrayList<OrderDetailsData> orderList) 
{
    serUri = "lists.json";
    method = "post";

    Gson gson = new Gson();
    String jsonstr = new Gson().toJson(orderList);
    JsonElement element = gson.fromJson (jsonStr, JsonElement.class);
    JsonObject jsonObject = element.getAsJsonObject();

    WebServiceAsyncTask webServiceTask = new WebServiceAsyncTask();
    webServiceTask.execute(serUri, method,jsonObject, this);
    return true;
}
公共布尔提交器(ArrayList orderList)
{
serUri=“lists.json”;
方法=“post”;
Gson Gson=新的Gson();
字符串jsonstr=new Gson().toJson(orderList);
JsonElement元素=gson.fromJson(jsonStr,JsonElement.class);
JsonObject JsonObject=element.getAsJsonObject();
WebServiceAsyncTask webServiceTask=新的WebServiceAsyncTask();
execute(serUri、方法、jsonObject、this);
返回true;
}

看看这个,我正在尝试使用GSON lib,试试这个,我没有经过测试。这个应该可以正常工作

以这种方式从Json字符串到Json对象:

String jsonStr = "{\"a\": \"A\"}";

Gson gson = new Gson();
JsonElement element = gson.fromJson (jsonStr, JsonElement.class);
JsonObject jsonObj = element.getAsJsonObject();
对于您的代码,这应该可以正常工作:

public boolean submitOrder(ArrayList<OrderDetailsData> orderList) 
{
    serUri = "lists.json";
    method = "post";

    Gson gson = new Gson();
    String jsonstr = new Gson().toJson(orderList);
    JsonElement element = gson.fromJson (jsonStr, JsonElement.class);
    JsonObject jsonObject = element.getAsJsonObject();

    WebServiceAsyncTask webServiceTask = new WebServiceAsyncTask();
    webServiceTask.execute(serUri, method,jsonObject, this);
    return true;
}
公共布尔提交器(ArrayList orderList)
{
serUri=“lists.json”;
方法=“post”;
Gson Gson=新的Gson();
字符串jsonstr=new Gson().toJson(orderList);
JsonElement元素=gson.fromJson(jsonStr,JsonElement.class);
JsonObject JsonObject=element.getAsJsonObject();
WebServiceAsyncTask webServiceTask=新的WebServiceAsyncTask();
execute(serUri、方法、jsonObject、this);
返回true;
}

以下代码片段将在一条语句中创建json对象数组,它甚至在使用Google的Gson库从对象创建json时执行空检查

public boolean submitOrder(ArrayList<OrderDetailsData> orderList) {
    Gson gson = new Gson();
    JsonObject myObj = new JsonObject();

    JsonElement ordersObj = gson.toJsonTree(orderList);
    myObj.add("list", ordersObj);
}
公共布尔提交器(ArrayList orderList){
Gson Gson=新的Gson();
JsonObject myObj=新的JsonObject();
JsonElement ordersObj=gson.toJsonTree(orderList);
添加(“列表”,ordersObj);
}

以下代码片段将在一条语句中创建json对象数组,它甚至在使用Google的Gson库从对象创建json时执行空检查

public boolean submitOrder(ArrayList<OrderDetailsData> orderList) {
    Gson gson = new Gson();
    JsonObject myObj = new JsonObject();

    JsonElement ordersObj = gson.toJsonTree(orderList);
    myObj.add("list", ordersObj);
}
公共布尔提交器(ArrayList orderList){
Gson Gson=新的Gson();
JsonObject myObj=新的JsonObject();
JsonElement ordersObj=gson.toJsonTree(orderList);
添加(“列表”,ordersObj);
}

mh…缺少一个{after array.put(json);感谢您指出这一点,但它已经存在于代码中。粘贴到此处时出错。mh…缺少一个{after array.put(json);感谢您指出这一点,但它已经存在于代码中。粘贴到此处时出错。