2015-12-28 24 views
7

gsonライブラリとJSONファイルを読む私は、次のようにフォーマットされた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 2行目。

+0

男の子ですが、どのラインがその例外を投げたかを知ることは間違いありません。 – azurefrog

+0

私は質問を編集しました。エラーはコードの2行目にあります。 – user2520969

+0

以下で解決しました、あなたはこれを見たことがありますか? http://stackoverflow.com/questions/17650419/unable-to-parse-json-array-using-gson – dklos

答えて

9

あなたはオブジェクトに配列を解析しようとしています。その場合は、jsonの最上位構造が配列なので失敗します。

私はいくつかのModelクラス

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

2を作成します)わずかに異なる方法で

1をこの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); 

あなたのコードはかろうじて読める(あなたのJSONを解析するので、私はあなたの問題を解決したと思います。

第2の方法:

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

ありがとう、それは正しく動作します! – user2520969

関連する問題