>>,android,json,parsing,hashmap"/>

首页 > 解决方案 > 需要解析动态HashMap>>

问题描述

我正在解析一个 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 
                        }
                    } 

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

标签: androidjsonparsinghashmap

解决方案


Using Gson I was able to parse your JSON:

Creating a Data class:

data class Data(
    val data: InnerData
)

And an InnerData class:

data class InnerData(
    val otherData: OtherData
)

And using your OtherData class:

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

Calling Gson to parse the JSON input:

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

I've used your JSON as an input and everything was working as expected.


推荐阅读