Я только начал использовать PL/JSON, и я могу разобрать данные без массива, такие как имя, например:Как использовать PL/JSON для синтаксического анализа массива данных
json_ext.get_string (json (l_list.get (i)), 'firstName');
Однако я не может понять, как анализировать данные массива, такие как адреса, например:
street1 := json_ext.get_string (json (l_list.get (i)), 'addresses.street1');
не работает.
Как я правильно анализировать массивы данных, используя:
street1 := json_ext.get_string (json (l_list.get (i)), 'addresses.street1');
, используя в качестве примера?
Вот пример 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": ""
}
],
}
Вот пример кода, который я использую:
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');
Вы уже разбираете внешний массив. В чем заключается ваша сложность в анализе внутреннего массива? Это одно и то же действие. –
@JamesSumners Для внутреннего массива данных не возвращаются. Похоже, json_ext.get_string (json (l_list.get (i)) не работает для вложенного внутреннего массива. – user6146386
@JamesSumners Основываясь на моем предыдущем ответе, есть ли у вас какое-либо представление о том, что я делаю неправильно? – user6146386