簡體   English   中英

如何使用 GSON 解析變量名 JSON 對象?

[英]How parse variable name JSON objects using GSON?

如何使用具有可變對象名稱的 GSON 解析 JSON? “路由”對象具有相同的結構,但名稱不同。 它有許多不同的名稱,因為它反映了旅行線路。 我正在嘗試將其直接讀取到 Java 類(Android、Retrofit),但我不會為布達佩斯的所有旅游線路創建單個類。 是否有可能以某種方式閱讀它?

{
"version": 2,
"status": "OK",
"code": 200,
"text": "OK",
"currentTime": 1448881433747,
"data": {
    "limitExceeded": false,
    "references": {
        "routes": {
            "BKK_9630": {
                "id": "BKK_9630",
                "shortName": "963",
                "longName": null,
                "description": "Hűvösvölgy | Nagykovácsi, Tisza István tér",
                "type": "BUS",
                "url": null,
                "color": "1E1E1E",
                "textColor": "FFFFFF",
                "agencyId": "BKK",
                "bikesAllowed": false
            },
            "BKK_0630": {
                "id": "BKK_0630",
                "shortName": "63",
                "longName": null,
                "description": "Hűvösvölgy | Nagykovácsi, Tisza István tér",
                "type": "BUS",
                "url": null,
                "color": "009FE3",
                "textColor": "FFFFFF",
                "agencyId": "BKK",
                "bikesAllowed": false
            }
        },
        "trips": {},
        "alerts": {}
    }
}
}

完整的 JSON 響應: http : //futar.bkk.hu/bkk-utvonaltervezo-api/ws/otp/api/where/search.json?query=Erd%C3%A9szh%C3%A1z

提前致謝!

這是您的類結構:

MyObject (主要對象):

public class MyObject{

    private Integer version;
    private String status;
    private Integer code;
    private Data data;
}

數據

public class Data{

    private boolean limitExceeded;
    private References references;
}

參考資料

public class References{

    private Map<String, Route> routes;
}

路線:

public class Route{

    private String shortName;
}

進而:

String json = "{'version':2,'status':'OK','code':200,'text':'OK','currentTime':1448881433747,'data':{'limitExceeded':false,'references':{'routes':{'BKK_9630':{'id':'BKK_9630','shortName':'963','longName':null,'description':'Hűvösvölgy | Nagykovácsi, Tisza István tér','type':'BUS','url':null,'color':'1E1E1E','textColor':'FFFFFF','agencyId':'BKK','bikesAllowed':false},'BKK_0630':{'id':'BKK_0630','shortName':'63','longName':null,'description':'Hűvösvölgy | Nagykovácsi, Tisza István tér','type':'BUS','url':null,'color':'009FE3','textColor':'FFFFFF','agencyId':'BKK','bikesAllowed':false}},'trips':{},'alerts':{}}}}";
        Gson gson = new Gson();
        MyObject fromJson = gson.fromJson( json, MyObject.class );
        System.out.println( fromJson );

結果:

MyObject [version=2, status=OK, code=200, data=Data [limitExceeded=false, references=References [routes={BKK_9630=Route [shortName=963], BKK_0630=Route [shortName=63]}]]]

請注意,我沒有寫出您必須編寫的所有字段。 也不要忘記創建getter and setters以及toString覆蓋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM