2016-02-28 95 views
0

我試圖檢索僱員和部門表使用keyset.I有jsonObject的hashmap.How我可以迭代Employee.employeeId使用for循環任何人都可以請幫我...如何通過循環使用鍵集迭代散列表

我simple.json:

{ 
    "routings": { 
     "routing1": { 
      "targetCollection-name": "EmployeeData", 
      "sourcetables-data": { 
       "Employee": [{ 
        "name": "employeeId", 
        "sourceDataType": "number", 
        "targetField": "employeeId", 
        "targetDataType": "double" 
       }, { 
        "name": "firstName", 
        "sourceDataType": "varchar2", 
        "targetField": "firstName", 
        "targetDataType": "string" 
       }, { 
        "name": "lastName", 
        " sourceDataType": "varchar2", 
        "targetField": "lastName", 
        "targetDataType": "string" 
       }, { 
        "name": "contactNumber1", 
        "sourceDataType": "number", 
        "targetField": "contactNumbers", 
        "targetDataType": "array" 
       }], 
       "department": [{ 
        "name": "departmentNumber", 
        "sourceDataType": "number", 
        "targetField": "departmentNumber", 
        "targetDataType": "double" 
       }, { 
        "name": "departmentType", 
        "sourceDataType": "number", 
        "targetField": "departmentType", 
        "targetDataType": "double" 
       }, { 
        "name": "startDate", 
        "sourceDataType": "timestamp", 
        "targetField": "startDate", 
        "targetDataType": "date" 
       }], 
       "foriegnkey": [{ 
        "parentTable": "Employee", 
        "parentkey": "employeeId", 
        "childTable": "department", 
        "childKey": "empId" 
       }] 
      } 
     } 
    } 

} 

我的代碼:

public class DataParse { 

    public static void main(String a[]){ 

     String FILEPATH = "C:\\Users\\BNSK\\Downloads\\simple.json"; 

     Map<String,Object> resultMap = new HashMap<String,Object>(); 
     ObjectMapper mapperObj = new ObjectMapper(); 

     System.out.println("Input Json: "+FILEPATH); 
     try { 
      resultMap = mapperObj.readValue(new File(FILEPATH), 
          new TypeReference<HashMap<String,Object>>(){}); 
      System.out.println("Output Map: "+resultMap); 


for (String key : resultMap.keySet()) { 
      Object routings= resultMap.get(key); 
      System.out.println(routings); 

     } 



     } catch (IOException e) { 

      e.printStackTrace(); 
     } 
    } 
+0

你'表的結構simple.json'只是描述。而'employeeId'只會有單一的價值。你如何去迭代單個值? –

+0

我想從使用鍵集的兩個表中檢索所有列值。 – dev777

+0

這裏,路由是我的價值。從價值,我應該再次分裂成關鍵,價值pairs.Iow我可以做 – dev777

回答

0

作爲例子:

Map routings = (Map)resultMap.get("routings"); 

    // lets iterate every routing in routings 
    for(Object routingKey : routings.keySet()){ 

     Map routing = (Map)routings.get(routingKey); 
     Map tableData = (Map)routing.get("sourcetables-data"); 

     List employeeList = (List)tableData.get("Employee"); 
     //lets print all names of Employee 
     for(Object item : employeeList){ 
      Map field = (Map)item; 
      Object name = field.get("name"); 
      Object value = field.get(name); 
      System.out.println(name+"="+value); 
     } 
    } 
1

艾略特是對的,我也想補充一點,在Java中8,你可以使用流(和lambd一個表達式),可以輕鬆地迭代映射鍵

resultMap.keySet().stream().forEach(key -> { 
    // do your thing here 
});