簡體   English   中英

如何使用Retrofit 2.0使用動態密鑰解析json?

[英]How to parse json with dynamic keys using Retrofit 2.0?

這是JSON ,其中jsonObject鍵是動態的:

{
  "CH000032": [
    {
      "type": "event",
      "details": {
        "programID": "MV10000032",
        "programType": "MOVIE",
        "title": "Titanic",
        "year": "1997",
        "rating": "PG-13",
        "durationSec": 11640,
        "startTimeSec": "",
        "endTimeSec": "",
        "language": "ENG",
        "isHD": true,
        "Genres": [
          "Movies",
          "Action"
        ],
        "description": "A seventeen-year-old aristocrat falls in love with a kind but poor artist aboard the luxurious, ill-fated R.M.S. Titanic.",
        "imageUrl": "http://res.cloudinary.com/dte07foms/image/upload/c_scale,h_405,w_270/l_Copyright_e3jt1k/v1508831090/Titanic_b0hqo0.jpg"
      }
    }
  ],
  "CH000033": [
    {
      "type": "event",
      "details": {
        "programID": "EP10000132",
        "programType": "EPISODE",
        "title": "A Chic Bar in Ibiza",
        "seriesTitle": "Two and a Half Men",
        "seasonNumber": 12,
        "epsiodeNumber": 2,
        "year": "2014",
        "rating": "TV-14",
        "durationSec": 1260,
        "startTimeSec": "",
        "endTimeSec": "",
        "language": "ENG",
        "isHD": true,
        "Genres": [
          "Comedy",
          "Romance"
        ],
        "description": "Alan has second thoughts about getting married when Walden has him sign a prenup.",
        "imageUrl": "http://res.cloudinary.com/dte07foms/image/upload/c_crop,h_405,w_270//l_Copyright_e3jt1k/v1508831090/2AndHalfmen_splkro.jpg"
      }
    }
  ]
}

我想解析這個JSON 請讓我知道應該怎么上課
使用Retrofit@SerializedName注釋編寫。

注意CH000032, CH000033 etc are dynamic.

您可以在模型類中使用Map<String, ModelClassName>進行動態,如下所示: -

public class Data {
    @SerializedName("your_key")
    @Expose
    private Map<String, ModelClassName> result;

    //....
}

這有助於在改造中解析動態密鑰。

你所要求的將需要很多工作,而更好的方法是將json的結構改為這樣的東西 -

"data": [
    {
        "type": "event",

         "programID": "MV10000032",
         "programType": "MOVIE",
         "title": "Titanic",
         "year": "1997",
         "rating": "PG-13",
         "durationSec": 11640,
         "startTimeSec": "",
         "endTimeSec": "",
         "language": "ENG",
         "isHD": true,
         "Genres": [
           "Movies",
           "Action"
         ],
        "description": "A seventeen-year-old aristocrat falls in love with a kind but poor artist aboard the luxurious, ill-fated R.M.S. Titanic.",
        "imageUrl": "http://res.cloudinary.com/dte07foms/image/upload/c_scale,h_405,w_270/l_Copyright_e3jt1k/v1508831090/Titanic_b0hqo0.jpg"

    },

    {
        "type": "event",

         "programID": "MV10000032",
         "programType": "MOVIE",
         "title": "Titanic",
         "year": "1997",
         "rating": "PG-13",
         "durationSec": 11640,
         "startTimeSec": "",
         "endTimeSec": "",
         "language": "ENG",
         "isHD": true,
         "Genres": [
         "Movies",
           "Action"
        ],
        "description": "A seventeen-year-old aristocrat falls in love with a kind but poor artist aboard the luxurious, ill-fated R.M.S. Titanic.",
        "imageUrl": "http://res.cloudinary.com/dte07foms/image/upload/c_scale,h_405,w_270/l_Copyright_e3jt1k/v1508831090/Titanic_b0hqo0.jpg"

    }]

暫無
暫無

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

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