2017-11-13 13 views
0

タイトルによると、私はJSONを初めて使ったので、私の問題から抜け出せません。私は1週間このエラーに取り組んでいます。私は本当に外出することを切望しています。JSONException:java.lang.String型のjsonDataをJSONArrayに変換できません

マイエラー:

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


    } 
} 

私はチュートリアルに目を通す場合でも、アイデアに何見当がつかない私を助けてください。

答えて

1

私はあなたの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(); 
     } 
1

エラーがdateJSON.toString(ここでは、このラインから

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

の原因となる)jsonData変数に文字列値を格納します。 jsonDataはJsonObjectです。

その後、あなたは文字列

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

からJsonArrayを取得しようEDITED

あなたはdateJsonオブジェクト から配列を盗んしたい場合

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

この行を置き換え

jsonData.put("jsonData", dateJSON); 
+0

残念ながら、同じエラー。 – Clau

+0

上記の編集で変更した後、エラーログを更新することはできますか? –

+0

は同じエラーです – Clau

関連する問題