Reputation: 1019
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();
}
}
Upvotes: 0
Views: 730
Reputation: 14015
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);
}
}
Upvotes: 0
Reputation: 9839
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
});
Upvotes: 1