2017-03-17 19 views
-2

嘗試讀取本地JSON文件時出現一些嚴重問題。我現在已經在無處不在了很多天,我能得到的最好和最遠的是從法讚的答案中複製出來的。 Reading a json file in Android嘗試讀取JSON文件的catch代碼Android

爲什麼Android Studio不讓我在這裏生成第二個try-catch代碼塊?

幫助和建議非常感謝!

這是My code

public String loadJSONFromAsset() { 
    String json = null; 
    try { 
     InputStream is = getAssets().open("names.json"); 
     int size = is.available(); 
     byte[] buffer = new byte[size]; 
     is.read(buffer); 
     is.close(); 
     json = new String(buffer, "UTF-8"); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
     return null; 
    } 
    return json; 
} 

String jsonString = loadJSONFromAsset(); 

try { 
    JSONObject json = new JSONObject(jsonString); 
    JSONObject jObject = json.getJSONObject("female"); 
    JSONObject jObject2 = jObject.getJSONObject("adult"); 
    String name = jObject2.toString(); 

    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 
+0

以良好的格式在您的描述中發佈您的代碼。請不要使用外部鏈接讓人們看到您的代碼。 –

+1

此外,Android在try/catch上顯示錯誤的原因是它不包含在方法中。 –

+0

非常感謝。它現在的作品:) – LoveCoding

回答

1

怎麼說,Android的Studio不會讓我在這裏產生第二 的try-catch代碼塊?

簡而言之,因爲您的代碼不在方法內。

做下面的事情應該解決這個錯誤。

public void someMethodIdentifier(){ // doesn't have to be void return type, you know better than me what type you want to return. 
    String jsonString = loadJSONFromAsset(); 
    try { 
     JSONObject json = new JSONObject(jsonString); 
     JSONObject jObject = json.getJSONObject("female"); 
     JSONObject jObject2 = jObject.getJSONObject("adult"); 
     String name = jObject2.toString(); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

注意 - 從被包含在try塊我想你打算返回一些數據中的語句的樣子?如果是這種情況,只需用適當的返回類型替換void返回類型並返回該數據即可。

+0

謝謝。它現在有效。 – LoveCoding

+0

@LoveCoding真的很感激,如果你把答案標記爲接受。謝謝。 –