json_flatten_singlerow Function
Syntax
C jsonOut = json_flatten_singlerow(C jsonIn [, N depth])
Arguments
- jsonInCharacter
The JSON containing nested arrays.
- depthNumeric
The maximum number of rows from a nested child array to use. Defaults to -1 (all rows in the child array).
Returns
- jsonOutCharacter
Returns the flattened JSON.
Description
Takes a JSON string with nested arrays and flattens the JSON so that there are no nested arrays. Data from the nested arrays are represented represented in the parent data as a set of repeating fields.
Discussion
This function will only operate on one level of nested arrays. For example if a row in a nested array has another nested array, this array will be ignored.
Notice in the example below that data from the nested arrays is represented in the parent record as a set of repeating fields. For example, Children_1_Name, Children_2_Name, etc.
Example
dim json as c
json = <<%str%
[
{"name": "John", "Lastname" : "Smith", "City" : "Boston", "State" : "MA", "Children": [
{"Name" : "Callie", "Age" : 5},
{"Name" : "Griffin", "Age" :3},
{"Name" : "Luke", "Age" : 1}
]
},
{"name": "Henry", "Lastname" : "Rhodes", "City" : "New York", "State" : "NY", "Children": [
{"Name" : "Howard", "Age" : 15},
{"Name" : "Robert", "Age" : 11}
]
},
{"name": "Allison", "Lastname" : "Berman", "City" : "Los Angeles", "State" : "CA", "Children": [
{"Name" : "Jeff", "Age" : 35},
{"Name" : "Roxanne", "Age" :33},
{"Name" : "Claudia", "Age" : 31},
{"Name" : "Denzel", "Age" : 11}
]
}
]
%str%
dim json2 as c
json2 = json_flatten_singlerow(json)
? json2
= [
{
"name": "John",
"Lastname": "Smith",
"City": "Boston",
"State": "MA",
"Children_1_Name": "Callie",
"Children_1_Age": 5,
"Children_2_Name": "Griffin",
"Children_2_Age": 3,
"Children_3_Name": "Luke",
"Children_3_Age": 1
},
{
"name": "Henry",
"Lastname": "Rhodes",
"City": "New York",
"State": "NY",
"Children_1_Name": "Howard",
"Children_1_Age": 15,
"Children_2_Name": "Robert",
"Children_2_Age": 11
},
{
"name": "Allison",
"Lastname": "Berman",
"City": "Los Angeles",
"State": "CA",
"Children_1_Name": "Jeff",
"Children_1_Age": 35,
"Children_2_Name": "Roxanne",
"Children_2_Age": 33,
"Children_3_Name": "Claudia",
"Children_3_Age": 31,
"Children_4_Name": "Denzel",
"Children_4_Age": 11
}
]