android - 需要解析动态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
}
}
所以我的问题是我在做什么这是最好的方法吗?如果不是这样,并且如果有任何解决方法将很高兴听到。
解决方案
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.
推荐阅读
- javascript - 如何使用 Node.js 将单个浮点变量从客户端流式传输到后端?
- ruby-on-rails - 在 activerecord 查询中使用 in_groups_of 进行 Rails kaminari 分页
- swift - 如何将用户使用 uiimagepicker 导入的图像一直移动到 ui 图像视图的右侧?
- java - 如何在进行 API 调用之前获取 authToken
- python - 切片 3D 数组 numpy
- c - CS50 结果发狂,我不知道为什么
- oracle-jet - Oracle Jet:无法使用 Ojet cli 9.1 制作混合应用程序
- python - 如何在 matplotlib 标题中包含符号
- c# - 如何使用 C# 修复 VSCode、Godot 的依赖问题
- javascript - 在Node中,当特定文本出现在stdout中时如何运行函数?