2016-12-19 233 views
-1

我在GSON中使用了GSON作爲JSON解析器,但密鑰並不總是相同的。例如, 。我有以下JSON:使用gson解析json樹

{ 
     "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

你要做這個ReferenceLink GSON解串器的方法。你必須定製像這樣只是舉例:

@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)); 
}