Java-Map检索内部映射值
我正在将JSON文件转换为Map对象,下面是输出Java-Map检索内部映射值,java,linkedhashmap,Java,Linkedhashmap,我正在将JSON文件转换为Map对象,下面是输出 [ INV: [[ TestCaseID:MKP, TestData: [ [ Controltype:text, Label:Title, Inputvalues:solid state device
[
INV: [[
TestCaseID:MKP,
TestData: [
[
Controltype:text,
Label:Title,
Inputvalues:solid state device
],
[
Controltype:search,
Label:Creater,
Inputvalues:Sabra-Anne Truesdale
]
]
]]
]
代码
从这里,如何检索内部映射[TestData
]?
我正在搜索测试用例id,如果它在映射上匹配,那么我需要检索测试数据。您应该能够使用get方法从映射中检索值,键为- 因此:
公共静态映射findTestCase(列表l,字符串testCaseID){
(地图一:l){
if(testCaseID.equals(i.get(“testCaseID”)){
返回i;
}
}
返回null;
}
List testCases=jsonMap.get(“INV”);
Map testCase=findTestCase(testCases,“MKP”);
if(testCase!=null){
获取(“TestData”);
}
这是假设您调用的解析代码将JSON数组解释为列表对象
想象一下JSON实际上是这样的:
{
“投资部”:[
{
“TestCaseID”:“MKP”,
“测试数据”:[
{
“控制类型”:“文本”,
“标签”:“标题”,
“输入值”:“固态设备”
},
{
“控制类型”:“搜索”,
“标签”:“创建者”,
“输入值”:“Sabra Anne Truesdale”
}
]
}
]
}
只是一个旁白:第一行中的新LinkedHashMap()
完全没有必要,因为当您在第二行重新分配变量时,它会丢失。这不起作用,因为映射只有“INV”作为唯一的键。它的值似乎是一个地图列表,在这个列表中的某个地方是OP想要得到的映射。这个答案的质量仍然很差,因为它不符合OP给出的逻辑。我正在搜索测试用例id,如果它在映射上匹配,那么我需要检索测试数据,并且总是返回第一个测试用例,不管它有什么id
Map jsonMap = new LinkedHashMap()
jsonMap = converJsonToMapObject(fileName)
println jsonMap