json_normalize Function
Syntax
C result = json_normalize(json as C,columns as C)
Arguments
- jsonTextCharacter
Text to select columns from.
- columnsCharacter
Columns is a '+' and ',' separated list on fields to group on.
The '+' delimiter denotes multiple columns on the same level.
The ',' delimiter denotes separate levels of grouping.
You can mix and match '+' and ',' delimiters.
Description
Generates a grouped JSON content from a flat JSON object list, and supplied columns to group on.
Running the following script converts the flat list into groups of state and city, and finally detail level.
jsonin = <<%str%
[
{"name" : "john", "state" : "MA", "city" : "boston"},
{"name" : "fred", "state" : "MA", "city" : "boston"},
{"name" : "liz", "state" : "MA", "city" : "springfield"},
{"name" : "jill", "state" : "NY", "city" : "albany"},
{"name" : "sid", "state" : "NY", "city" : "manhattan"},
{"name" : "tammy", "state" : "NY", "city" : "manhattan"},
{"name" : "fran", "state" : "RI", "city" : "providence"},
{"name" : "tess", "state" : "RI", "city" : "providence"}
]
%str%
? json_normalize(jsonin,"state,city")Produces the output below:
[
{
"state": "MA",
"_list_1": [
{
"city": "boston",
"_list_2": [
{
"name": "john"
},
{
"name": "fred"
}
]
},
{
"city": "springfield",
"_list_2": [
{
"name": "liz"
}
]
}
]
},
{
"state": "NY",
"_list_1": [
{
"city": "albany",
"_list_2": [
{
"name": "jill"
}
]
},
{
"city": "manhattan",
"_list_2": [
{
"name": "sid"
},
{
"name": "tammy"
}
]
}
]
},
{
"state": "RI",
"_list_1": [
{
"city": "providence",
"_list_2": [
{
"name": "fran"
},
{
"name": "tess"
}
]
}
]
}
]