Мне нужно изменить формат List
[{
"OPERATION_NAME": "COPY",
"OPERATION_STATUS": "READY",
"COUNT(1)": 1
}, {
"OPERATION_NAME": "ARCHIVE",
"OPERATION_STATUS": "READY",
"COUNT(1)": 1
}, {
"OPERATION_NAME": "EXPORT_CA",
"OPERATION_STATUS": "READY",
"COUNT(1)": 1
}, {
"OPERATION_NAME": "MERGE",
"OPERATION_STATUS": "READY",
"COUNT(1)": 1
}, {
"OPERATION_NAME": "MERGE",
"OPERATION_STATUS": "DONE",
"COUNT(1)": 1
}]
И я изменяю ее на это:
[{
"READY": 0,
"NEW": 0,
"DONE": 0,
"OPERATION_NAME": "MERGE"
}, {
"READY": 0,
"NEW": 0,
"DONE": 0,
"OPERATION_NAME": "ARCHIVE"
}, {
"READY": 0,
"NEW": 0,
"DONE": 0,
"OPERATION_NAME": "COPY"
}, {
"READY": 0,
"NEW": 0,
"DONE": 0,
"OPERATION_NAME": "EXPORT_CA"
}]
Но мне не удается получить значение COUNT (1) и установить его нановый объект, который я создаю.
В конце у меня должно быть следующее:
[{
"READY": 1,
"NEW": 0,
"DONE": 1,
"OPERATION_NAME": "MERGE"
}, {
"READY": 1,
"NEW": 0,
"DONE": 0,
"OPERATION_NAME": "ARCHIVE"
}, {
"READY": 1,
"NEW": 0,
"DONE": 0,
"OPERATION_NAME": "COPY"
}, {
"READY": 1,
"NEW": 0,
"DONE": 0,
"OPERATION_NAME": "EXPORT_CA"
}]
Вот моя функция для преобразования объекта в другой:
private List<Map<String, Object>> transformObject(List<Map<String, Object>> resDB) {
Gson gson = new Gson();
LOGGER.info("Json response : {}", gson.toJson(resDB));
List<Map<String, Object>> result = new ArrayList<>();
List<String> listOfOperationName = new ArrayList<>();
List<String> listOfOperationStatus = new ArrayList<>();
// Retrieve OP Name and OP Status
for (Map<String, Object> map : resDB) {
for (Map.Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
if(key.equals("OPERATION_NAME")) {
listOfOperationName.add(value.toString());
} else if(key.equals("OPERATION_STATUS")) {
listOfOperationStatus.add(value.toString());
}
}
}
// Remove duplicates
Set<String> setName = new HashSet<>(listOfOperationName);
listOfOperationName.clear();
listOfOperationName.addAll(setName);
// Remove duplicates
Set<String> setStatus = new HashSet<>(listOfOperationStatus);
listOfOperationStatus.clear();
listOfOperationStatus.addAll(setStatus);
// Create field OP Name with value
for (String tempOpName : listOfOperationName) {
Map<String, Object> tempObjName = new HashMap<>();
tempObjName.put("OPERATION_NAME", tempOpName);
for (String tempOpStatus : listOfOperationStatus) {
tempObjName.put(tempOpStatus, 0);
}
result.add(tempObjName);
}
Gson gsonResult = new Gson();
LOGGER.info("Json response : {}", gsonResult.toJson(result));
return result;
}
Если у вас есть идеи, как это сделать, это было бы здорово!Большое спасибо!