PLSQL-JSON icon indicating copy to clipboard operation
PLSQL-JSON copied to clipboard

Alterations to json_object after parsing a JSON string are not possible

Open fb-datax opened this issue 9 years ago • 2 comments

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 avatar Sep 27 '16 07:09 fb-datax

@fb-datax Could you please try using the latest release as it includes several corrections when modifying an existing json structure.

doberkofler avatar Dec 08 '16 18:12 doberkofler

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.

fb-datax avatar Jan 23 '17 14:01 fb-datax