2016-05-04 7 views
2

GSONを使用したJSON解析ではBEGIN_OBJECTが必要でしたがBEGIN_ARRAYでした。 JSONを解析するためGSONを使用したJSON解析ではBEGIN_OBJECTが必要でしたが、BEGIN_ARRAYでした

static class Page { 
     String Status; 
     Data Data; 
    } 

    static class Data { 
     String ReportID; 
    } 

    static class Page1 { 
     String StatusCode; 
     String Status; 
     Data1 Data; 
    } 

    static class Data1 { 

     List <Data2> Data; 
     List<ColumnHeaders> ColumnHeaders; 
     List<ReportHeaders> ReportHeaders; 
     List<Summary> Summary; 
    } 

    static class Data2{ 
     List<object1> object1; 
    } 
    static class object1 { 
     String Value; 
    } 

    static class ColumnHeaders { 
     String Title; 
    } 

    static class Summary { 
     String Value; 
    } 

    static class ReportHeaders { 
     String Value; 
    } 

コード: は、私が使用してgsonを解析するためGSON

{ 
    "StatusCode": 4, 
    "Data": {    
     "Data": [ 
       [ 
        {"Value": "19"},{"Value": "19"}], 
       [    
        {"Value": "77"},{"Value": "4"} 
       ] 
       ], 

     "ColumnHeaders": [ 
      { 
       "Width": "11.0%", 
       "Title": "Date" 
      }, 
      { 
       "Width": "7.6%", 
       "Title": "Total Clicks" 
      } 
     ], 
     "ColumnHeaderGroups": [ 
      { 
       "ColSpan": "1", 
       "Title": "" 
      }, 
      { 
       "ColSpan": "7", 
       "Title": "Chats" 
      }, 
      { 
       "ColSpan": "3", 
       "Title": "Times (HH:MM:SS)" 
      } 
     ], 

     "ReportHeaders": [ 
      { 
       "Name": "Title", 
       "Value": "Chat Summary By Date" 
      }, 
      { 
       "Name": "Run Date", 
       "Value": "05/03/2016 10:52:39 AM" 
      }, 
      { 
       "Name": "Time Zone", 
       "Value": "GMT+00:00" 
      } 
     ], 
     "Summary": [    
      { 
       "Value": "96" 
      }, 
      { 
       "Value": "23" 
      } 
     ] 
    }, 
    "Status": "success" 
} 

クラスを使用して解析する必要があるGson JSON実装 JSON形式に定義によるクラスに発生するエラーを取得していますgson使用: "19"、 "値": "19"、 "値": "77"、 "値": "4"

を する

"値" 解析する必要があります

内部データ配列[]

Gson gson = new Gson(); 
     Page1 page = gson.fromJson(json, Page1.class); 
     String statusString = page.Status; 
     System.out.println("Status : " + statusString); 
     System.out.println("StatusCode : " + page.StatusCode); 
     if ("success".equals(statusString)) { 
      System.out.println("Inside if"); 
      for (ColumnHeaders item : page.Data.ColumnHeaders) 
       System.out.print(item.Title + "  :"); 
      System.out.println(); 
      for (Summary item1 : page.Data.Summary) 
       System.out.print(item1.Value + " :");  
     } 
+0

にPOJOを変更してみてください。あなたの 'Data2'は' object1'という名前のフィールドを持つオブジェクトですが、あなたのJSONにはthatという名前のフィールドを持つオブジェクトはありません。 – Andreas

答えて

0

はそれが `リスト<リスト >`ではなく `一覧 `する必要がありますので、 `Data1.Data`は、オブジェクトの配列の配列であるためにJSONこの

class Data{ 
    @SerializedName("Data") 
    @Expose 
    private List<List<Data2>> Data = new ArrayList<List<Data2>>(); 
    @SerializedName("ColumnHeaders") 
    @Expose 
    private List<ColumnHeader> ColumnHeaders = new ArrayList<ColumnHeader>(); 
    @SerializedName("ReportHeaders") 
    @Expose 
    private List<ReportHeader> ReportHeaders = new ArrayList<ReportHeader>(); 
    @SerializedName("Summary") 
    @Expose 
    private List<Summary> Summary = new ArrayList<Summary>(); 
    //getter setter 
} 

class Data2{ 
    @SerializedName("Value") 
    @Expose 
    private String Value; 
    //getter setter 
} 
関連する問題