2016-02-13 95 views
0

這些是我在android中創建Json的代碼,當我運行程序時,我有一個異常! plz幫助我java.lang.String類型的值不能轉換爲JSONArray

公共類MyActivity延伸活動{

Button button; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    button= (Button) findViewById(R.id.button); 
    try { 


     AssetManager manager = getResources().getAssets(); 
     InputStream Is= manager.open("myjson.json"); 
     String result=""; 
     int c = 0; 
     while ((Is.read())!=-1){ 

      result +=(char)c; 

     } 
     Is.close(); 

     JSONArray jsonArray = new JSONArray(result); 
     final JSONObject object=jsonArray.getJSONObject(0); 


     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
        try { 


         Toast.makeText(getApplicationContext(), "id is:" + object.getString("Day"), Toast.LENGTH_LONG).show(); 
         Toast.makeText(getApplicationContext(), "name is:" + object.getString("Start"), Toast.LENGTH_LONG).show(); 
         Toast.makeText(getApplicationContext(), "type is:" + object.getString("Finish"), Toast.LENGTH_LONG).show(); 


        }catch (Exception e){ 
         Toast.makeText(getApplicationContext(),e+"",Toast.LENGTH_LONG).show(); 
        } 
        } 

     }); 


    }catch (Exception e){ 
     Toast.makeText(getApplicationContext(),e+"",Toast.LENGTH_LONG).show(); 
    } 

} 

}

,這些都是JSON的代碼:

[ 
    { 
     "Id": 5207, 
     "Name": "Эриван", 
     "Types": [ 
      "Ресторан" 
     ], 
     "Latitude": 53.904752, 
     "Longitude": 27.521095, 
     "OperatingTime": [ 
      { 
       "Day": 1, 
       "Start": "10:00:00", 
       "Finish": "23:00:00" 
      }, 
      { 
       "Day": 2, 
       "Start": "10:00:00", 
       "Finish": "23:00:00" 
      }, 
      { 
       "Day": 3, 
       "Start": "10:00:00", 
       "Finish": "23:00:00" 
      }, 
      { 
       "Day": 4, 
       "Start": "10:00:00", 
       "Finish": "23:00:00" 
      }, 
      { 
       "Day": 5, 
       "Start": "10:00:00", 
       "Finish": "23:00:00" 
      }, 
      { 
       "Day": 6, 
       "Start": "08:00:00", 
       "Finish": "23:00:00" 
      }, 
      { 
       "Day": 0, 
       "Start": "08:00:00", 
       "Finish": "23:00:00" 
      } 
     ], 
     "IsBookingAvailable": false 
    }] 
+0

如果您要將異常堆棧跟蹤添加到問題中,可能會有幫助。另外,由於我們無法從代碼片段中真正地告知行號,請指出相關行。 –

+0

我改變了敬酒,但沒有回答! – AliJCVD

回答

1

變化

Toast.makeText(getApplicationContext(), "id is:" + object.getString("Day"), Toast.LENGTH_LONG).show(); 
Toast.makeText(getApplicationContext(), "name is:" + object.getString("Start"), Toast.LENGTH_LONG).show(); 
Toast.makeText(getApplicationContext(), "type is:" + object.getString("Finish"), Toast.LENGTH_LONG).show(); 

// object.getString("Id") 
Toast.makeText(getApplicationContext(), "id is:" + object.getString("Id"), 
     Toast.LENGTH_LONG).show(); 
// object.getString("Name") 
Toast.makeText(getApplicationContext(), "name is:" + object.getString("Name"), 
     Toast.LENGTH_LONG).show(); 
// object.getJSONArray("Types").toString() 
Toast.makeText(getApplicationContext(), "type is:" + 
     object.getJSONArray("Types").toString(), Toast.LENGTH_LONG).show(); 

「日」「開始」 & 「完成」不能通過object直接訪問。它們位於「OperatingTime」JSONArray的幾個嵌套JSONObject中。

+0

這不是一個答案,這是Java命名約定。 – Stanojkovic

+1

@Stanojkovic我不確定我是否理解你剛纔所說的。 –

+0

@MohammedAoufZOUAG我不認爲他意識到你改變了從JSON檢索到的對象 – davehenry

相關問題