2016-05-09 37 views
-1

我有一個json,如下所述。使用Gson的動態Json解析Android

{ 
    "product": [ 
    { 
     "classification": "abc", 
     "ABC": [ 
     { 
      "classification": "abc", 
      "name": "abc new product one", 
      "price": "10775.0000", 
     }, 
     { 
      "classification": "abc", 
      "name": "abc new product two", 
      "price": "12725.0000", 
     } 
     ] 
    }, 
    { 
     "classification": "def", 
     "DEF": [ 
     { 
      "classification": "def", 
      "name": "def product one", 
      "price": "728.0000", 
     }, 
     { 
      "classification": "def", 
      "name": "def product two", 
      "price": "1263.0000", 
     }, 
     ] 
    } 
    ], 
    "status": "OK", 
    "message": "success" 
} 

在上述JSON,在大寫字母鍵是動態

(例:ABC,DEF)

。我創建瞭如下POJO類:

public class ProductResponse{ 

     private String status; 
     private String message; 
     private List<Products>; 

     Getters And Setters 
    } 

    public class Products{ 

     private String classification; 

    } 

我掙扎寫在產品POJO類的下一個部分,由於這是在首都的鑰匙

(例:ABC,DEF)

是動態的。我使用凌雲庫獲取數據和解析我使用的是gson庫。請幫助我。

+1

api的標準差。 PLZ根據您的需求編輯您的網頁api ..... !!! –

+0

使用JSONObject檢索ABC的列表內容可能是一種解決方法。至少,即使動態,你也有一個來自後端的密鑰。然後你可以解析json字符串爲ArrayList <> – asozcan

+0

那種情況下不直接將json映射到對象當然可以有其他解決方案。直到現在你可以得到ABC,通過循環迭代和讀取json的動態索引。 –

回答

0

您不能擁有動態名稱。原因在於您的json中的名稱需要鏈接到對象中的屬性。 我建議你在你的JSON和模型添加一個「分類」屬性如下:現在

{ 
    "type": "def", 
    " results": [ 
    { 
     "name": "def product one", 
     "price": "728.0000", 
    }, 
    { 
     "name": "def product two", 
     "price": "1263.0000", 
    }, 
    ] 
} 



public final class ProductResponse{ 

     private String status; 
     private String message; 
     private List<Products> product = new Arraylist<>(); 

     // Getters And Setters 
    } 

    public final class Products{ 

     private String type; // type of product // ABC or DEF 
     private List<Result> results = new Arraylist<>(); 

     // Getters And Setters 
    } 


    public final class Result{ 

     private String name; 
     private String price; 


    // Getters And Setters 
    } 

你的產品類有關聯的分類結果的列表!

希望它有幫助!

+0

如果你在我的json中觀察,有兩種類型的產品。一個是「ABC」,另一個是「DEF」。我已經將它用於突出顯示目的。 – user2511004

+0

嗨,我更新了片段。類型需要定義。請參閱上文。 – GuillaumeAgis

+0

@ user2511004你滿意我的回答嗎?如果是,請提出我的答案!謝謝:) – GuillaumeAgis

0

你的問題是動態鍵,我發現它不是動態的。正如我所看到的,對於product陣列中的每個元素,classification鍵的值是下一個鍵。唯一的區別是它們是大寫字母。

{ 
    "classification": "def", 
    "DEF": [ 
    { 
     "classification": "def", 
     "name": "def product one", 
     "price": "728.0000", 
    }, 
    { 
     "classification": "def", 
     "name": "def product two", 
     "price": "1263.0000", 
    }, 
    ] 
} 

正如在這裏"classification": "def"和接下來的關鍵是DEF。我要做的是獲取classification鍵的值,將字符串中的所有字母大寫,然後將其用作key

+0

我已將其大寫,僅用於突出顯示目的。其實這是一個小字母。你能告訴我怎麼才能像你說的那樣得到Pojo類的「分類」價值。 – user2511004

+0

您可以在構造函數中設置該值。解析值並在創建pojo類的對象時傳遞它們。 –