Note: Assuming that you have a flattened data sample to begin with.
Find:
"([a-zA-Z\_]+)": ".+",
Replace:
"$1",
Find:
"([a-zA-Z\_]+)": (false|true),
Replace:
"$1",
Find:
"([a-zA-Z\_]+)": [0-9]+,
Replace:
{
"name": "$1",
"type": "long"
},
Find:
"([a-zA-Z\_]+)": [0-9\.]+,
Replace:
{
"name": "$1",
"type": "double"
},
Find:
"([A-Za-z0-9]+)",
Replace:
{
"name":"$1",
"type":"jq",
"expr":".$1",
},
Find:
{
"name": "([A-Za-z0-9]+)",
"type": "(float|double|long|string)"
},
Replace:
{
"name": "$1",
"type": "jq",
"expr": ".$1",
},
Find:
"expr": "\.([A-Za-z0-9]+)_([A-Za-z0-9]+)_([A-Za-z0-9]+)_([A-Za-z0-9]+)",
Replace:
"expr": "\.$1.$2.$3.$4"
Note: Increase/Decrease $N equivalent one by one