I want my nested JSON to be parsed only at 1st level instead of parsing all the nested parts. I have below JSON:
{
"Name":Naman,
"Age":25,
"Address":
{ "H.No":"23",
"Street_no":2,
"Area":"Model Town" },
"Country":"IND"
}
I want output like below:
Name | Age | Address | Country
Naman 25 "H.No":"23", IND
"Street_no":2,
"Area":"Model Town"
I don't want to handle Address field separately as these are dynamic fields that are coming in from source.
Hi @nagar57
You can use spath path=Address to extract the Address values. Here's a run anywhere example using your source example data ...
| makeresults `comment("# generate dummy data ")`
| eval _raw="{
\"Name\": \"Naman\",
\"Age\":25,
\"Address\":
{\"H.No\":\"23\",
\"Street_no\":2,
\"Area\":\"Model Town\"},
\"Country\":\"IND\"
}"
| spath input=_raw
`comment("# use the following to extract Address; you should not need to specify input=_raw")`
| spath input=_raw path=Address
| rex mode=sed field=Address "s/[\}\{ ]//g"
| fields Name Age Address Country
| stats values(*) AS * BY Name
| table Name Age Address Country
Please mark the post as solved if this helps.
Note: you could also swap the rex command with this eval statement, if you prefer...
| eval Address=replace(Address, "[\}\{ ]", "")