Alterations to json_object after parsing a JSON string are not possible
After a JSON string has been parsed into a json_object, modifications (put('field','value')) are not included in the non-raw output.
Sample code:
set serveroutput on size unlimited;
declare
v_json json_object;
v_json_string varchar(32000) := '{"data":[{"p1":["a1",8.11],"p2":["a1",8.11]},{"p1":["a1",8.11],"p2":["a1",8.11]}]}';
begin
v_json := json_object(v_json_string);
json_debug.output(v_json, false);
v_json.put('newnode','somevalue');
json_debug.output(v_json, false); /* missing newnode*/
json_debug.output(v_json, true); /* contains newnode*/
end;
/
The lastID in the json_obejct is not set to the last root node of the parsed json.
~~I did fix this in my fork but I had to include some more changes like the possibility to check to current running version. If time allows it I'll try to send a proper merge request in the next few days.~~ ~~Commits:~~ ~~fb-datax/PLSQL-JSON@9116883824eea1a156251b6a74185e9cdd4cee82 fb-datax/PLSQL-JSON@f1b36e7a345934140679e962ad3e5e632dfdb052~~
Update: Proposed fix does only works for root node
@fb-datax Could you please try using the latest release as it includes several corrections when modifying an existing json structure.
The 2nd outout json_debug.output(v_json, false); still doesn't contain the newly added 'newnode'.
We did circumvent the problem with a new routine which loops through the structure and creates a fresh copy of the parsed json_object in order to be able to add new nodes and values.