我使用 retrofit2 进行网络调用,使用 GSON 作为转换器来解析 JSON。我想解析一个 json 结构,其中键不固定

I am using retrofit2 for networking calls and GSON as a converter to parse JSON. I want to parse a json structure in which keys are not fixed

我正在使用 retrofit2 进行网络调用,并使用 GSON 作为转换器来解析 JSON。我想解析一个 json 结构,其中的键是不固定的。 在创建 models/beans 方面需要帮助。 这是 JSON 我正在尝试 parse.The user_card 数组中的键不断变化。

{
"isNewVersionAvailable": false
"ishotelslive": true
"error": false
"message": "Card information found."
"cardArray": {
"status": 1
"msg": "Cards fetched Succesfully"
"user_cards": {
"cxb39d6c8bf1b4d5bb6e479fbaca931bb14880e8511": {
"name_on_card": "asc"
"card_name": "2346"
"expiry_year": "2016"
"expiry_month": "06"
"card_type": "CC"
"card_token": "cxb39d6c8bf1b4d5bb6e479fbaca931bb14880e8511"
"is_expired": 0
"card_mode": "CC"
"card_cvv": 0
"card_no": "512345XXXXXX2346"
"card_brand": "MASTERCARD"
"card_bin": "512345"
"isDomestic": "Y"
}
"re6e69c2482160d8b2190b5dc36af2d46472ba5aafa": {
"name_on_card": "asc"
"card_name": "1111"
"expiry_year": "2016"
"expiry_month": "06"
"card_type": "CC"
"card_token": "re6e69c2482160d8b2190b5dc36af2d46472ba5aafa"
"is_expired": 0
"card_mode": "CC"
"card_cvv": 0
"card_no": "411111XXXXXX1111"
"card_brand": "VISA"
"card_bin": "411111"
"isDomestic": "Y"
}
"tye6977832bc0134be29317af77a6892b3e916dd69e": {
"name_on_card": "Shoban Test"
"card_name": "Shoban Test"
"expiry_year": "2017"
"expiry_month": "05"
"card_type": "CC"
"card_token": "tye6977832bc0134be29317af77a6892b3e916dd69e"
"is_expired": 0
"card_mode": "CC"
"card_cvv": 0
"card_no": "512345XXXXXX2346"
"card_brand": "MASTERCARD"
"card_bin": "512345"
"isDomestic": "Y"
}
"gh57f9e8ee6628e5c1cf1228d8491a08f966cae9f7s": {
"name_on_card": "asc"
"card_name": "9984"
"expiry_year": "2016"
"expiry_month": "06"
"card_type": "VISA"
"card_token": "gh57f9e8ee6628e5c1cf1228d8491a08f966cae9f7s"
"is_expired": 0
"card_mode": "DC"
"card_cvv": 0
"card_no": "434679XXXXXX9984"
"card_brand": "VISA"
"card_bin": "434679"
"isDomestic": "Y"
}
}
}
}

只需在 CardArray 对象中使用地图字段

import java.util.Map;

class Parent {
    public boolean isNewVersionAvailable;
    public boolean ishotelslive;
    public boolean error;
    public String message;
    public CardArray cardArray;
}

class CardArray {
    public int status;
    public String msg;
    public Map<String, Card> user_cards;
}

class Card {
    public String name_on_card;
    public String card_name;
    public String expiry_year;
    public String expiry_month;
    public String card_type;
    public String card_token;
    public int is_expired;
    public String card_mode;
    public String card_cvv;
    public String card_no;
    public String card_brand;
    public String card_bin;
    public String isDomestic;
}