简体   繁体   中英

How to iterate over a hashmap using keyset by using for loop

I'm trying to retrieve the Employee and department tables using keyset.I have jsonObject in the hashmap.How can I iterate Employee.employeeId using for loop.Can anyone please help me out ...

My 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"
                }]
            }
        }
    }

}

My code :

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();
        }
    }

Elliot is right, I'd also like to add that in Java 8 you can use streams (and lambda expressions) to easily iterate over Map keys

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

As example:

    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);
        }
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM