BAEL-6692 - converting json to map and comparing (#14630)
* BAEL-6692 - converting json to map and comparing * BAEL-6692 - converting json to map and comparing * BAEL-6692 - converting json to map and comparing
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
package com.baeldung.jsontomap;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class FlattenUtils {
|
||||
public static Map<String, Object> flatten(Map<String, Object> map) {
|
||||
return flatten(map, null);
|
||||
}
|
||||
|
||||
private static Map<String, Object> flatten(Map<String, Object> map, String prefix) {
|
||||
Map<String, Object> flatMap = new HashMap<>();
|
||||
map.forEach((key, value) -> {
|
||||
String newKey = prefix != null ? prefix + "." + key : key;
|
||||
if (value instanceof Map) {
|
||||
flatMap.putAll(flatten((Map<String, Object>) value, newKey));
|
||||
} else if (value instanceof List) {
|
||||
// check for list of primitives
|
||||
Object element = ((List<?>) value).get(0);
|
||||
if (element instanceof String || element instanceof Number || element instanceof Boolean) {
|
||||
flatMap.put(newKey, value);
|
||||
} else {
|
||||
// check for list of objects
|
||||
List<Map<String, Object>> list = (List<Map<String, Object>>) value;
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
flatMap.putAll(flatten(list.get(i), newKey + "[" + i + "]"));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
flatMap.put(newKey, value);
|
||||
}
|
||||
});
|
||||
return flatMap;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.baeldung.jsontomap;
|
||||
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
public class JsonUtils {
|
||||
public static Map<String, Object> jsonFileToMap(String path) throws IOException {
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
return mapper.readValue(new File(path), new TypeReference<Map<String, Object>>() {});
|
||||
}
|
||||
|
||||
public static Map<String, Object> jsonFileToMapGson(String path) throws IOException {
|
||||
Gson gson = new Gson();
|
||||
return gson.fromJson(new FileReader(path), new TypeToken<Map<String, Object>>() {}.getType());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user