2015-06-05 2 views
2

Я пытаюсь десериализации этот сложный JSon используя GSON 2.2.4Deserialize комплекс с использованием JSON GSON 2.2.4

{ 
    "AUSMASS": { 
     "KAPITEL": [ 
      { 
       "KAP": "102", 
       "KAG": "", 
       . 
       . 
       . 
      } 
     ], 
     "POSITION_TEXT": [ 
      { 
       "MANDT": "500", 
       "ID": "00181171", 
       . 
       . 
       . 
      } 
     ], 
     "POSITION": [ 
      { 
       "MANDT": "500", 
       "ID": "00180699", 
       . 
       . 
       . 
      } 
     ] 
     "KONDITION": [ 
      { 
       "MANDT": "500", 
       "ID": "00180699", 
       . 
       . 
       . 
      } 
     ] 
    } 
} 

И мои классы POJO капитель, POSITIONTEXT, положение и Kondition

public class AusmassInfo { 

    @Expose 
    private ArrayList<KAPITEL> KAPITEL = new ArrayList<>(); 
    @SerializedName("POSITION_TEXT") 
    @Expose 
    private ArrayList<POSITIONTEXT> POSITIONTEXT = new ArrayList<>(); 
    @Expose 
    private ArrayList<POSITION> POSITION = new ArrayList<>(); 
    @Expose 
    private ArrayList<KONDITION> KONDITION = new ArrayList<>(); 


    ...Getters and Setters 
} 

и это главный POJO, который включает в себя AUSMASS ...

public class Example { 
    @Expose 
    private AusmassInfo AUSMASS; 

    /** 
    * @return The AUSMASS 
    */ 
    public AusmassInfo getAUSMASS() { 
     return AUSMASS; 
    } 

    /** 
    * @param AUSMASS The AUSMASS 
    */ 
    public void setAUSMASS(AusmassInfo AUSMASS) { 
     this.AUSMASS = AUSMASS; 
    } 

} 

Я пытаюсь десериализации таким образом

  Gson gson = new Gson(); 

      Type type = new TypeToken<ArrayList<Example>>() { 
      }.getType(); 
      bigObject = gson.fromJson(reader, type); 

Но я получаю пустые объекты.

Может ли любой орган помочь мне с этим? Спасибо заранее.

ответ

0

Gson не может сериализовать списки обобщений по умолчанию. Но есть обходной путь, поиск родового списка gson при переполнении стека, я помню, что кто-то опубликовал подход, чтобы заставить его работать.

Другой способ - итерация по массиву json и сериализация каждого элемента.

0

Указанный json - это объект, а не массив.

Так что использование ниже надреза кода

Gson gson = new Gson(); 
bigObject = gson.fromJson(reader, Example.class); 
+0

Спасибо за ваш ответ, но это не работает. Я изменил GSON с JACKSON, и теперь я могу архивировать для десериализации этого вложенного json. – ArbenMaloku

Смежные вопросы