import
java.io.*;
import
java.util.*;
class
GFG {
public
static
void
main(String[] args) {
flattener(
""
, getJson());
}
static
void
flattener(String parentKey, Map<String, Object> nodes) {
for
(Map.Entry<String, Object> entry : nodes.entrySet()) {
String key = entry.getKey();
if
(isPrimitive(entry.getValue())) {
System.out.println(parentKey + getSeparator(parentKey) + key +
" : "
+ entry.getValue());
}
else
{
if
(entry.getValue()
instanceof
Map) {
flattener(parentKey + getSeparator(parentKey) + key, (Map<String, Object>) entry.getValue());
}
else
if
(entry.getValue()
instanceof
List) {
flattener(parentKey + getSeparator(parentKey) + key, convertToMap((List<Object>) entry.getValue()));
}
}
}
}
static
String getSeparator(String parentKey) {
return
parentKey.isEmpty() ?
""
:
"."
;
}
static
Map<String, Object> convertToMap(List<Object> arr) {
Map<String, Object> map =
new
HashMap<>();
for
(
int
i =
0
; i < arr.size(); i++) {
map.put(String.valueOf(i), arr.get(i));
}
return
map;
}
static
boolean
isPrimitive(Object o) {
return
o
instanceof
Number || o
instanceof
String || o
instanceof
Boolean;
}
public
static
Map<String, Object> getJson() {
Map<String, Object> jsonData =
new
HashMap<>();
jsonData.put(
"name"
,
"john doe"
);
Map<String, Object> details =
new
HashMap<>();
details.put(
"a"
,
1
);
details.put(
"b"
,
2
);
details.put(
"c"
,
3
);
ArrayList<Object> dArray =
new
ArrayList<>();
Map<String, Object> dObject =
new
HashMap<>();
dObject.put(
"a"
,
1
);
dArray.add(dObject);
dArray.add(
5
);
dArray.add(
"f"
);
details.put(
"d"
, dArray);
jsonData.put(
"details"
, details);
return
jsonData;
}
}