I have situation where I hI was trying to map a JSON to Java Object which consists of nested objects with the dynamic key. I tried to map it to LinkedHashMap but it failed to do so.
Below is the JSON output I am trying to map:
{
"success": true,
"item": {
"id": 8903,
"firstLevel": {
"266940": {
"SecondLevel": {
"407617": {
"thirdLevel": {
"2381098": {
"outcome": "PASS",
"screenshot": "2617.png",
"dataRow": 0
},
"2381134": {
"outcome": "PASS",
"screenshot": "06d.png",
"dataRow": 0
}
}
},
"407620": {
"thirdLevel": {
"2381043": {
"outcome": "PASS",
"screenshot": "2617.png",
"dataRow": 0
},
"2381198": {
"outcome": "PASS",
"screenshot": "06d.png",
"dataRow": 0
}
}
}
}
} ,
"266941": {
"SecondLevel": {
"407617": {
"thirdLevel": {
"2381094": {
"outcome": "PASS",
"screenshot": "2617.png",
"dataRow": 0
},
"2381138": {
"outcome": "PASS",
"screenshot": "06d.png",
"dataRow": 0
}
}
},
"407620": {
"thirdLevel": {
"2381047": {
"outcome": "PASS",
"screenshot": "2617.png",
"dataRow": 0
},
"2381191": {
"outcome": "PASS",
"screenshot": "06d.png",
"dataRow": 0
}
}
}
}
}
},
"outcome": "PASS",
"status": "FINISHED"
}
}
I also used @JsonAnySetter to map the dynamic value to the LinkedHashMap but this also didn't help.
private Map<String, FirstLevel> firstLevel = new LinkedHashMap<>();
public Map<String, FirstLevel> getFirstLevel() {
return firstLevel;
}
public void setFirstLevel(Map<String, FirstLevel> firstLevel) {
this.firstLevel = firstLevel;
}
@JsonAnySetter
public void setFirstLevel(String key, FirstLevel value) {
this.firstLevel.put(key, value);
}
Below is the code for the firstLevel Object
private Map<String, FirstLevel> firstLevel = new LinkedHashMap<>();
public Map<String, FirstLevel> getFirstLevel() {
return firstLevel;
}
public void setFirstLevel(Map<String, FirstLevel> firstLevel) {
this.firstLevel = firstLevel;
}