I am just starting to use PL/JSON and I am able to parse non-array data, such as first name, for example:
json_ext.get_string (json (l_list.get (i)), 'firstName');
However I can't figure out how to parse array data such as addresses, for example:
street1 := json_ext.get_string (json (l_list.get (i)), 'addresses.street1');
does not work.
How would I correctly parse array data, using:
street1 := json_ext.get_string (json (l_list.get (i)), 'addresses.street1');
using as an example?
Here is an example of the JSON:
[
{
"firstName": "Edward",
"middleName": "Wolfgang",
"lastName": "Munster",
"addresses": [
{
"city": "",
"addressType": "home",
"state": "CA",
"street1": "1313 Mockingbird Lane",
"street2": ""
},
{
"city": "",
"addressType": "business",
"state": "CA",
"street1": "123 Morgan Rd.",
"street2": ""
}
],
}
Here is the an example of the code I am using:
BEGIN
SELECT json
INTO l_json
FROM json_table
WHERE id = 1;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
l_json := NULL;
END;
l_list := json_list (l_json);
FOR i IN 1 .. l_list.COUNT
LOOP
--These parse correctly
firstname := json_ext.get_string (json (l_list.get (i)), 'firstName');
middlename := json_ext.get_string (json (l_list.get (i)), 'middleName');
lastname := json_ext.get_string (json (l_list.get (i)), 'lastName');
--These do not parse at all
addresstype := json_ext.get_string (json (l_list.get (i)), 'addresses.addressType');
street1 := json_ext.get_string (json (l_list.get (i)), 'addresses.street1');
street2 := json_ext.get_string (json (l_list.get (i)), 'addresses.street2');
city := json_ext.get_string (json (l_list.get (i)), 'addresses.city');
state := json_ext.get_string (json (l_list.get (i)), 'addresses.state');