【发布时间】:2020-04-05 17:52:12
【问题描述】:
我尝试了几天来完成这项工作。但不能。
我想要的是遍历任何给定的 JSON 并将键和值对放入映射中。作为示例考虑这个 JSON
String test = {
"RechargeRequest":{
"RechargeSerialNo":"2645",
"RechargeChannelID":"3",
"RechargeObj":{
"SubAccessCode":{
"PrimaryIdentity":"763500001"
}
},
"RechargeInfo":{
"CashPayment":[
{
"Amount":"30"
}
]
}
}
}
到目前为止我已经尝试过什么
JSONObject jsonObj = new JSONObject(test);
Iterator<String> keys = jsonObj.keys();
Map<String,String> map = new HashMap<>();
while(keys.hasNext()) {
String key = keys.next();
if (jsonObj.get(key) instanceof JSONObject) {
}else if(jsonObj.get(key) instanceof JSONArray){
}else{
}
}
地图值应该类似于 ("RechargeChannelID","3") ("金额":"30")
有人可以帮帮我吗?
谢谢,
【问题讨论】:
-
jsonArray 会发生什么,因为数组中可能有多个相同的键,例如值?在这种情况下,为 map 设置值肯定会覆盖以前的值
-
顺便说一句,你的方法有什么问题?不过看起来还可以……此外,您必须在
if-else条件内递归地执行任务,因为它们可能包含嵌套对象。您可以编写另一种方法并传递JSONObject或JSONArray Object任何您找到的内容以获取其所有嵌套的密钥对。但是您必须考虑我对数组元素的第一条评论 -
您为什么要这样做?因为同一个key可能会出现在JSON数组或者其他不同级别的JOSN节点中。
标签: java json tree-traversal