如何为包含日期和数据的有序对组成的JSON响应创建POJO?

时间:2019-03-09 19:24:10

标签: java android json gson pojo

这是我的JSON的样子:

{
   "Meta Data":{
      "1: Symbol":"MSFT",
      "2: Indicator":"Moving Average Convergence/Divergence (MACD)",
      "3: Last Refreshed":"2019-03-08",
      "4: Interval":"daily",
      "5.1: Fast Period":12,
      "5.2: Slow Period":26,
      "5.3: Signal Period":9,
      "6: Series Type":"open",
      "7: Time Zone":"US/Eastern"
   },
   "Technical Analysis: MACD":{
      "2019-03-08":{
         "MACD":"1.5751",
         "MACD_Signal":"1.6779",
         "MACD_Hist":"-0.1028"
      },
      "2019-03-07":{
         "MACD":"1.8551",
         "MACD_Signal":"1.7036",
         "MACD_Hist":"0.1515"
      },
      "2019-03-06":{
         "MACD":"1.9574",
         "MACD_Signal":"1.6657",
         "MACD_Hist":"0.2918"
      }
   }
}

我尝试通过在线工具生成POJO,但是,它为每个数据生成了不同的POJO。由于我的数据可能具有一百个日期。我想要一个通用的POJO设置,该设置允许我将数据与日期一起存储,例如2D数组或HashMap

编辑:我正在使用AndroidRetrofit开发一个Gson应用。

1 个答案:

答案 0 :(得分:0)

固定键后(例如"Meta Data""MACD"等),您可以将JSON对象映射到POJO类。

当键是动态键(例如"1: Symbol""2019-03-08",...)时,可以将JSON对象映射到Map

例如如果使用Gson

class Root {
    @SerializedName("Meta Data")
    Map<String, String> metaData;

    @SerializedName("Technical Analysis: MACD")
    Map<String, Analysis> analysis;
}

class Analysis {
    @SerializedName("MACD")
    String macd;

    @SerializedName("MACD_Signal")
    String macdSignal;

    @SerializedName("MACD_Hist")
    String macdHist;
}