
USING Progress.Lang.*.
USING Progress.Json.ObjectModel.*.
define var jObj as JsonObject.
DEFINE TEMP-TABLE ttParent NO-UNDO SERIALIZE-NAME "Parent"
    FIELD parentField AS CHARACTER.

DEFINE TEMP-TABLE ttChild1 NO-UNDO
    FIELD id AS RECID 
    FIELD childField AS CHARACTER .
    
DEFINE TEMP-TABLE ttChild2 NO-UNDO
    FIELD id AS RECID 
    FIELD childField AS CHARACTER .    
    
DEFINE DATASET dsDataset serialize-hidden FOR ttParent, ttChild1, ttChild2  
    PARENT-ID-RELATION pir1 FOR ttPArent, ttChild1 PARENT-ID-FIELD ttChild1.id
    PARENT-ID-RELATION pir2 FOR ttPArent, ttChild2 PARENT-ID-FIELD ttChild2.id.
    
   
CREATE ttParent.
ASSIGN ttParent.parentField = "AAA".

CREATE ttChild1.
ASSIGN ttChild1.id = RECID(ttParent)
       ttChild1.childField = "BBB".

CREATE ttChild2.
ASSIGN ttChild2.id = RECID(ttParent)
       ttChild2.childField = "CCC".


jObj = new JsonObject().

output to test.json.

dataset dsDataset:WRITE-JSON("JsonObject",jObj).
message 'before ' string(jObj:GetJsonText()).

for each ttParent:
delete ttParent.
end.

for each ttChild1:
delete ttChild1.
end.

for each ttChild2:
delete ttChild2.
end.

dataset dsDataset:READ-JSON("JsonObject",jObj).
jObj = new JsonObject().

dataset dsDataset:WRITE-JSON("JsonObject",jObj).
message 'after ' string(jObj:GetJsonText()).
output close.
