Java-地图检索内部地图值

问题描述

我正在将JSON文件转换为Map Object,下面是输出

[
    INV: [[ 
            TestCaseID:MKP,TestData: [
                [
                    Controltype:text,Label:Title,Inputvalues:solid state device
                ],[
                    Controltype:search,Label:Creater,Inputvalues:Sabra-Anne TruesDale
                ]
            ]
    ]]
]

代码

Map jsonMap = new LinkedHashMap()
jsonMap = converjsonToMapObject(fileName)
println jsonMap

由此,我如何检索内部地图[TestData]? 我正在搜索Test Case ID(如果在地图上匹配),那么我需要检索测试数据。

解决方法

您应该能够使用get方法并通过键-https://docs.oracle.com/javase/8/docs/api/java/util/Map.html#get-java.lang.Object-

从地图中检索值。

所以:

public static Map findTestCase(List<Map> l,String testCaseID) {
    for (Map i : l) {
        if (testCaseID.equals(i.get("TestCaseID"))) {
            return i;
        }
    }
    return null;
}

List testCases = jsonMap.get("INV");
Map testCase = findTestCase(testCases,"MKP");
if (testCase != null) {
    testCase.get("TestData");
}

这是假设您正在调用的解析代码将JSON数组解释为List对象。

想象一下,JSON实际上看起来像这样:

{
  "INV": [
    {
      "TestCaseID": "MKP","TestData": [
        {
          "Controltype": "text","Label": "Title","Inputvalues": "solid state device"
        },{
          "Controltype": "search","Label": "Creater","Inputvalues": "Sabra-Anne Truesdale"
        }
      ]
    }
  ]
}