2016-12-19 5 views
-1

У меня есть GSON как парсер JSON на Java, но ключи не всегда одинаковы. Например, . У меня есть следующий JSON:Разбор дерева json с gson

{ 
     "message":"....", 
     "categories_sorted": [ 
      { 
       "550e8400-e29b-41d4-a716-446655440000": [ 
       { 
        "550e8400-e29b-41d4-a716-446655443333": [ 
        { 
         "550e8400-e29b-41d4-a716-446655448964": [] 
        } 
        ] 
       }, 
       { 
        "550e8400-e29b-41d4-a716-446655443334": [] 
       } 
       ] 
      }, 
      { 
       "550e8400-e29b-41d4-a716-446655440023": [ 
       { 
        "550e8400-e29b-41d4-a716-446655442344": [] 
       } 
       ] 
      } 
      ] 
     } 

Мне нужно разобрать это дерево «categories_sorted». Мой Java POJO объект:

public class CategoryPOJO { 

    @SerializedName("message") 
    @Expose 
    private String message; 

    @SerializedName("categories_sorted") 
    @Expose 
    private JsonArray sortedCategoryItems; 

....... 
Getters and setters 
} 
+0

Я нашел приближенный варианту решений, но они не работают в моем случае Ссылки: [ссылка] (https://gist.github.com/patrickbaumann/897492) –

ответ

-1

см jsonschema2pojo.org ресурс для получения классов POJO (выберите GSON и JSON опции)

+0

Я видел этот ресурс раньше. Но мне это не подходит, потому что мои клавиши динамичны –

0

Вы должны сделать метод GSON Deserialiser для этого ReferenceLink. Вы должны обычай, как это просто, например:

@Override 
public User deserialize(JsonElement json, Type type, 
         JsonDeserializationContext context) throws JsonParseException { 

     return new CategoryPOJO(
      json.getAsJsonPrimitive().getAsInt(), 
      json.getAsString(), 
      json.getAsInt(), 
      (CategoryPOJO)context.deserialize(json.getAsJsonPrimitive(), 
      CategoryPOJO.class)); 
}