繁体   English   中英

JSONException:无法将类型为java.lang.String的jsonData转换为JSONArray

[英]JSONException : at jsonData of type java.lang.String cannot be converted to JSONArray

正如标题所述,我是JSON新手,我无法摆脱困境。 我正在为这个错误工作1周,我真的很想离开。

我的错误:

JSONException: Value [{"data":"11-13-2017","numeVanzator":"Clau","numarClient":0}] at jsonData of type java.lang.String cannot be converted to JSONArray

我的JSON

{
 "jsonData" : {
    "11-13-2017" : {
      "Clau" : {
        "-KyokKjL9UQpsfKZYZqM" : [ {
          "pret" : "80",
          "produs" : "Shirt",
          "produsId" : "-Kyok58s0dOAnVOnbJPk"
        } ]
      }
    }
  }
}

我查看了关于StackOverFlow教程,但绝对没有解决方案。

我的代码:

 private void writeJSON(String metodaPlata) throws JSONException {
    String numeVanzator = SharedPreference.getString(this, SharedPreference.USER_DATA, SharedPreference.NUME_VANZATOR, "");
    String jsonDataFromShared = SharedPreference.getString(this, SharedPreference.APP_DATA, SharedPreference.JSON_DATA, "");

    int totalPrice = 0;
    for(VanzatorProduse v : Util.getInstance().getVanzatorProduse())
    {
        int vPrice = Integer.parseInt(v.getPret());
        totalPrice = totalPrice + vPrice;

    }
    String pretTotal = Integer.toString(totalPrice);
    String produseSelectate = Integer.toString(listaProdusePreview.getAdapter().getCount());


    JSONObject jsonData;
    JSONArray dateJSON;
    JSONObject obj;
    JSONArray arrayForList;


    if (jsonDataFromShared.equals("")) {

        jsonData = new JSONObject();
        dateJSON = new JSONArray();
        obj = new JSONObject();
        arrayForList = new JSONArray();

        JSONObject objListaSiModalitate = new JSONObject();

        //       arrayForList.put(stock_list.toString());

        objListaSiModalitate.put("lista", new JSONArray(Util.getInstance().getVanzatorProduse()));
        objListaSiModalitate.put("metodaPlata", metodaPlata);

        obj.put("data", getDate(calendarData.getTimeInMillis()));
        obj.put("numeVanzator", numeVanzator);
        obj.put("numarClient", numarVanzare);

        dateJSON.put(obj);
        jsonData.put("jsonData", dateJSON.toString());

        SharedPreference.putString(this, SharedPreference.APP_DATA, SharedPreference.JSON_DATA, jsonData.toString());

    } else {

        jsonData = new JSONObject(jsonDataFromShared);
        dateJSON = jsonData.getJSONArray("jsonData");

        obj = new JSONObject();

        JSONObject objListaSiModalitate = new JSONObject();
        objListaSiModalitate.put("metodaPlata", metodaPlata);
        obj.put("produseSelectate", produseSelectate);
        obj.put("sumaProduse", pretTotal);
        obj.put("data", getDate(calendarData.getTimeInMillis()));
        obj.put("numeVanzator", numeVanzator);
        obj.put("numarClient", numarVanzare);

        dateJSON.put(obj);

        jsonData.put("jsonData", dateJSON);

        System.out.println("jsonData" + dateJSON);
        SharedPreference.putString(this, SharedPreference.APP_DATA, SharedPreference.JSON_DATA, jsonData.toString());


    }
}

请帮我,即使我看了教程,我也不知道该怎么办。

我认为您的json解析将是

try {
            JSONObject jsonObject = new JSONObject("jsonData");
            JSONObject jsonObject1 = jsonObject.getJSONObject("11-13-2017");
            JSONObject jsonObject2 = jsonObject1.getJSONObject("Clau");
            JSONArray jsonArray = jsonObject2.getJSONArray("-KyokKjL9UQpsfKZYZqM");
            JSONObject jsonObject3 = (JSONObject) jsonArray.getJSONObject(0);
            String string = jsonObject3.getString("pret");
            String string1 = jsonObject3.getString("produs");
            String string2 = jsonObject3.getString("produsId");
        } catch (JSONException e) {
            e.printStackTrace();
        }

此行的错误原因

jsonData.put("jsonData", dateJSON.toString()); 

这里dateJSON.toString()将字符串值存储到jsonData变量。 jsonData是JsonObject。

然后,您尝试从字符串中检索JsonArray

jsonData = new JSONObject(jsonDataFromShared); //This line convert your string to jsonobject.
dateJSON = jsonData.getJSONArray("jsonData"); 

已编辑

如果要从dateJson对象检索数组,请替换此行

jsonData.put("jsonData", dateJSON.toString()); 

jsonData.put("jsonData", dateJSON); 

JSONException:值

[英]JSONException: Value <br of type java.lang.String cannot be converted to JSONArray

暂无
暂无

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

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