简体   繁体   English

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

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

As title said I'm new to JSON and I can't get out of my problem. 正如标题所述,我是JSON新手,我无法摆脱困境。 I'm working on this error for 1 week I'm really desperate to get out. 我正在为这个错误工作1周,我真的很想离开。

My error : 我的错误:

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

My JSON : 我的JSON

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

I looked over tutorials on StackOverFlow but absolutely no solution. 我查看了关于StackOverFlow教程,但绝对没有解决方案。

My code : 我的代码:

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


    }
}

Please help me I have no idea what to idea even if I look over tutorials. 请帮我,即使我看了教程,我也不知道该怎么办。

I think your json parsing will be, 我认为您的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();
        }

Error causes from this line 此行的错误原因

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

Here dateJSON.toString() store the string value to jsonData variable. 这里dateJSON.toString()将字符串值存储到jsonData变量。 jsonData is JsonObject. jsonData是JsonObject。

Then You try to retrieve JsonArray from string 然后,您尝试从字符串中检索JsonArray

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

EDITED 已编辑

If you want to retreive array from dateJson object Replace this line 如果要从dateJson对象检索数组,请替换此行

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

To

jsonData.put("jsonData", dateJSON); 

暂无
暂无

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

相关问题 JSONException:无法将类型为java.lang.String的值转换为JSONArray - JSONException: Value of type java.lang.String cannot be converted to JSONArray org.json.JSONException值java.lang.String类型的连接无法转换为JSONArray - org.json.JSONException value Connection of type java.lang.String cannot be converted to JSONArray 解析数据org.json.JSONException时出错:类型java.lang.String的值无法转换为JSONArray - Error Parsing Data org.json.JSONException: Value of type java.lang.String cannot be converted to JSONArray JSONException:值 - JSONException: Value <br of type java.lang.String cannot be converted to JSONArray org.json.JSONException:类型为java.lang.String成功时的值0无法转换为JSONArray - org.json.JSONException: Value 0 at success of type java.lang.String cannot be converted to JSONArray 解析类型为java.lang.String的data.org.json.JSONException值时出错,无法转换为JSONArray - Error parsing data.org.json.JSONException value of type java.lang.String cannot be converted to JSONArray JSONException:类型java.lang.String的值无法转换为JSONObject - JSONException: Value of type java.lang.String cannot be converted to JSONObject JSONException:无法将类型为java.lang.String的值___转换为JSONObject - JSONException: Value ___ of type java.lang.String cannot be converted to JSONObject jsonexception:类型为java.lang.String的不能转换为JSONObject - jsonexception: of type java.lang.String cannot be converted to JSONObject org.json.JSONException:无法将 java.lang.String 类型的值 java.io.IOException 转换为 JSONArray - org.json.JSONException: Value java.io.IOException of type java.lang.String cannot be converted to JSONArray
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM