2017-03-01 19 views
3

GSONライブラリを使用してjavaでこのJSONファイルを読みたいと思います。 gsonライブラリを使用するのが初めてです。誰か私のコードを修正してください 私のJSONファイルは、次のようになります。GSONライブラリでjsonファイルをjavaに読み込む方法

{ 
"tableRows":[ 
    { 
    "id":"100", 
    "mailContent":"Test mail content 123", 
    "sentiment":"0" 
    }, 
    { 
    "id":"200", 
    "mailContent":"Test mail content 123", 
    "sentiment":"0" 
    }, 
    { 
    "id":"300", 
    "mailContent":"Test mail content 123", 
    "sentiment":"0" 
    } 
] 
} 

これは私がこのファイル読み取りに書いたJavaコードです:

import java.io.FileNotFoundException; 
import java.io.FileReader; 
import com.google.gson.JsonArray; 
import com.google.gson.JsonElement; 
import com.google.gson.JsonIOException; 
import com.google.gson.JsonParser; 
import com.google.gson.JsonSyntaxException; 
import com.google.gson.JsonObject; 
public class Sample { 
public static void main(String[] args) { 

    JsonParser parser = new JsonParser(); 
    try { 
     JsonElement jsontree = parser.parse(
      new FileReader(
       "/Users/kesavan-4688/Desktop/JSP-Eclipse/Sample/src/Demo/sample.json" 
      ) 
     ); 
     JsonElement je = jsontree.getAsJsonObject(); 
     JsonArray ja = je.getAsJsonArray(); 
     for (Object o : ja) 
     { 
      JsonObject person = (JsonObject) o; 

      String id = person.get("id").getAsString(); 
      System.out.println(id); 

      String mail = person.get("mailcontent").getAsString(); 
      System.out.println(mail); 

      String sentiment = person.get("sentiment").getAsString(); 
      System.out.println(sentiment); 
     } 
    } 
    catch (JsonIOException e) { 
     e.printStackTrace(); 
    } catch (JsonSyntaxException e) { 
     e.printStackTrace(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
} 

} 

をしかし、私は次の例外を取得:

Exception in thread "main" java.lang.IllegalStateException: This is not a JSON Array. 
at com.google.gson.JsonElement.getAsJsonArray(JsonElement.java:106) 
at Demo.Sample.main(Sample.java:18) 
+0

の可能重複http://stackoverflow.com/questions/29965764/how-to-parse-json -file-with-gson – freedev

答えて

3

JsonObjectJsonArrayに変換しようとすると動作しません。ルートを取得するには拳が必要ですJsonObjectgetAsJsonArray(String memberName)JsonArrayとして、次のようにプロパティtableRowsを取得する:

... 
// Get the root JsonObject 
JsonObject je = jsontree.getAsJsonObject(); 
// Get the property tableRows as a JsonArray 
JsonArray ja = je.getAsJsonArray("tableRows"); 
for (Object o : ja) { 
    ... 
    // Warning JSON is case sensitive so use mailContent instead of mailcontent 
    String mail = person.get("mailContent").getAsString(); 
    ... 
} 

出力:

100 
Test mail content 123 
0 
200 
Test mail content 123 
0 
300 
Test mail content 123 
0 
関連する問題