Mio san,
I faced a similar problem in the ABAP environment of BTP.
The question and its answer proved to be helpful.
"string_table" type can also be used, so add it.
METHOD if_oo_adt_classrun~main.
DATA:
begin of ls_result,
data type string,
* tab type standard table of string with empty key,
tab TYPE string_table,
end of ls_result.
DATA(lv_json_string) = |\{\r\n| &
| "data": "abc",\r\n| &
| "tab": ["a", "b", "c"]\r\n| &
|\}|.
xco_cp_json=>data->from_string( lv_json_string )->apply( VALUE #(
( xco_cp_json=>transformation->camel_case_to_underscore )
( xco_cp_json=>transformation->boolean_to_abap_bool )
) )->write_to( REF #( ls_result ) ).
out->write( ls_result-data ).
LOOP AT ls_result-tab REFERENCE INTO DATA(lr).
out->write( lr->* ).
ENDLOOP.
ENDMETHOD.
Result.