【问题标题】:Need to parse dynamic HashMap<String, HashMap<String, HashMap<String,String>>>需要解析动态HashMap<String, HashMap<String, HashMap<String,String>>>
【发布时间】:2021-11-13 11:54:58
【问题描述】:

我正在解析一个 json,然后我需要填充图表上的值,我得到的响应如下

 {
 "message": "Successful.",
 "data": {
 "stats": {
  "Total Transactions": 1,
  "Today Transactions": 0,
  "Today Pending Transactions": 0,
  "Payment links created": 2,
  "Api payments": 0
},
"otherData": {
  "countiesData": {
    "2021": {
      "US": 1
    }
  },
  "transactionTypesData": {
    "2021": {
      "PAYMENT_LINK": 1
    }
  },
  "graphData": {
    "2021": {
      "SUCCESS": {
        "1": 0,
        "2": 0,
        "3": 0,
        "4": 0,
        "5": 0,
        "6": 0,
        "7": 0,
        "8": 0,
        "9": 1,
        "10": 0,
        "11": 0,
        "12": 0
      }
    }
  },
  "currentMoth": 3200,
  "preMonthAvr": 3200
}
},
"code": 200,
"accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9."
}

我已经在 otherData 中为 graphData 创建了模型数据。

data class OtherData(
    var countiesData : Any,
    var transactionTypesData: Any,
    var graphData : HashMap<String,HashMap<String,HashMap<String,String>>>

)

我通过这些行在 graphData 中获得了年份,但我无法在 year 对象中获得其他值。

it.data.data.otherData.graphData.let { graphYear->
                        if (graphYear.isNotEmpty()){
                            tvYearForRevenueReport.text = graphYear.keys.elementAt(0)
                            tvFirstGraphLabel.text = graphYear.getValue(graphYear.keys.elementAt(0))   // giving error at this line 
                        }
                    } 

所以我的问题是我在做什么是最好的方法吗?如果不是这样,如果有任何解决方法将很高兴听到。

【问题讨论】:

  • Isn't graphData: HashMap>> 另外,你收到的错误是什么?
  • 没关系,我可以将重铸字符串转换为 Int
  • 你的解析行可以吗? Gson/JSONObject 调用?

标签: android json parsing hashmap


【解决方案1】:

使用 Gson 我能够解析您的 JSON:

创建一个数据类:

data class Data(
    val data: InnerData
)

还有一个 InnerData 类:

data class InnerData(
    val otherData: OtherData
)

并使用您的 OtherData 类:

data class OtherData(
    var countiesData : Any,
    var transactionTypesData: Any,
    var graphData : HashMap<String,HashMap<String,HashMap<String,String>>>
)

调用 Gson 解析 JSON 输入:

val parsed = Gson().fromJson(json, Data::class.java)

我已使用您的 JSON 作为输入,一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-29
    • 2013-05-27
    相关资源
    最近更新 更多