2015-12-28 57 views
7

我必須格式化爲以下JSON文件:閱讀與GSON庫中的JSON文件

[{ 
    'title': 'Java', 
    'authors': ['Auth', 'Name'] 
}, 
{ 
    'title': 'Java2', 
    'authors': ['Auth2', 'Name2'] 
}, 
{ 
    'title': 'Java3', 
    'authors': ['Auth3', 'Name3'] 
}] 

所以我使用GSON庫來解析該文件,用下面的代碼嘗試:

JsonElement jelement = new JsonParser().parse(pathFile); 
     JsonObject jObject = jelement.getAsJsonObject(); 
     JsonArray jOb = jObject.getAsJsonArray(""); 
     final String[] jObTE = new String[jOb.size()]; 
     for (int k=0; k<jObTE.length; k++) { 
      final JsonElement jCT = jOb.get(k); 
      JsonObject jOTE = jCT.getAsJsonObject(); 
      JsonArray jContentTime = jOTE.getAsJsonArray("content_time"); 
      final String[] contentTime = new String[jContentTime.size()]; 
      for (int i=0; i<contentTime.length; i++) { 
       final JsonElement jsonCT = jContentTime.get(i); 
       JsonObject jObjectTE = jsonCT.getAsJsonObject(); 
       JsonArray jTE = jObjectTE.getAsJsonArray(""); 
       final String[] contentTimeTE = new String[jTE.size()]; 
       for (int j=0; j<contentTimeTE.length; j++) { 
        final JsonElement jsonCTTE = jTE.get(j); 
        contentTime[j] = jsonCTTE.getAsString(); 
       } 
      } 
     } 

但是,這樣做,我發現這個錯誤:java.lang.IllegalStateException: Not a JSON Object在第二行。

+0

男孩,它肯定會有助於知道*哪個*行拋出異常... – azurefrog

+0

我編輯了這個問題。錯誤出現在代碼的第二行。 – user2520969

+0

解決下面,順便說一句,你見過這個? http://stackoverflow.com/questions/17650419/unable-to-parse-json-array-using-gson – dklos

回答

9

你試圖解析數組到對象,在這種情況下,你將失敗,因爲你的json中的頂級結構是數組。

我會稍微不同的方式解析此JSON

1)創建一些Model

public class Model { 
    private String title; 
    private List<String> authors; 
//getters ... 
} 

2)將給您的JSON(

public static final String JSON_PATH = "/Users/dawid/Workspace/Test/test.json"; 

Gson gson = new Gson(); 
BufferedReader br = new BufferedReader(new FileReader(JSON_PATH)); 
Type type = new TypeToken<List<Model>>(){}.getType(); 
List<Model> models = gson.fromJson(br, type); 

您的代碼幾乎沒有可讀的,所以我想這解決了你的問題

第二種方式:

BufferedReader br = new BufferedReader(new FileReader(JSON_PATH)); 
JsonParser parser = new JsonParser(); 
JsonArray array = parser.parse(br).getAsJsonArray(); 
+0

謝謝你,它正確的作品! – user2520969