需要解析动态HashMap<String, HashMap<String, HashMap<String,String>>>
Posted
技术标签:
【中文标题】需要解析动态HashMap<String, HashMap<String, HashMap<String,String>>>【英文标题】:Need to parse dynamic 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使用 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 作为输入,一切正常。
【讨论】:
以上是关于需要解析动态HashMap<String, HashMap<String, HashMap<String,String>>>的主要内容,如果未能解决你的问题,请参考以下文章
在 MyBatis 3 中为 HashMap 参数嵌套 foreach