Я пытаюсь использовать класс /ui5/cl_json_parser
для анализа строки JSON.
Следующий фрагмент кода воспроизводит проблему:
REPORT ztest_json_parse.
DATA: input TYPE string,
output TYPE string,
json_parser TYPE REF TO /ui5/cl_json_parser.
input = '{"address":[{"street":"Road","number":"545"},{"street":"Avenue","number":"15"}]}'.
CREATE OBJECT json_parser.
json_parser->parse( input ).
json_parser->print( ).
output = json_parser->value( path = '/address/1/street' ).
WRITE output.
Метод print
показываетправильная проанализированная строка JSON, но переменная output
всегда пуста.
Я проследил код до метода VALUE
класса /UI5/CL_JSON_PARSER
в строке 15, которая содержит:
read table m_entries into l_entry with table key parent = l_parent name = l_name.
В отладчике я вижу, что l_parent = '/address/1'
и l_name = 'street'
, и что во внутренней таблице m_entries
содержится запись с parent = '/address/1'
и name = 'street'
. Тем не менее оператор READ
всегда возвращает sy-subrc = 4
и ничего не находит.
Кто-нибудь может помочь?