Jq is the right tool for processing JSON data (https://stedolan.github.io/jq/manual/v1.5/).
Sample input.json:
{
"data": {
"div1": {
"name": "some name",
"age": 1,
"address_1": "some address",
"items": {
"item_x1": "some data"
}
},
"div2": {
"name": "some other name",
"age": 2,
"address_2": "some address",
"items": {
"item_x2": "some data"
}
},
"div3": {
"name": "another name",
"age": 3,
"address_3": "some address",
"items": {
"item_x3": "some data"
}
}
}
}
jq -c '"data" as $main_k | .data as $data | .data | to_entries
| group_by(.key) | map(from_entries)[] | [paths(scalars)]
| map(("\($main_k)." + join(".")) as $key
| {($key): (reduce .[] as $k ($data; . = .[$k]))})
| add' input.json
The output:
{"data.div1.name":"some name","data.div1.age":1,"data.div1.address_1":"some address","data.div1.items.item_x1":"some data"}
{"data.div2.name":"some other name","data.div2.age":2,"data.div2.address_2":"some address","data.div2.items.item_x2":"some data"}
{"data.div3.name":"another name","data.div3.age":3,"data.div3.address_3":"some address","data.div3.items.item_x3":"some data"}
datashould be an object key -->{'data:' {...}}. Post a valid JSON