How to add/insert multiple TJsonArray's within each other and still maintain their 'names'?

93 views Asked by At

I have been searching for days, but I can't figure out how to add/insert TJsonArrays within each other, without them losing their property name. In the following I need to set the names of 'subArray' and 'CompanyItemState._get_accessToInvoice' (an array of integer)

This is my code:

jsonObj := TJsonObject.Create;
  try
    ParamsObj := jsonObj.O['params'];
    ParamsObj.FromSimpleObject(SessionInfo, false);
    jsonObj['facadeClassName'] := 'dk.vs.int.IntFac';
    jsonObj['methodName']      := 'typesTest';
    argsObj                    := jsonObj.A['args'].AddObject;
    argsObj['aChar']           := input._get_aChar;
    argsObj['aString']         := input._get_aString;
    argsObj['aDouble']         := input._get_aDouble;
    argsObj['aInt']            := input._get_aInt;
    argsObj['aLong']           := input._get_aLong;
    argsObj['aBool']           := input._get_aBool;
    argsObj['aSpecialEnum']    := input._get_aSpecialEnum;
    argsObj['aEnum']           := input._get_aEnum;
    argsObj['aNotherEnum']     := input._get_aNotherEnum;
    argsObj['aBigEnum']        := input._get_aBigEnum;
    jsonaArray                 := argsObj.A['aArray'].AddArray;
    jsonaArray.Insert(0, dk_vs_int_IntFac_i.SupportedTypeSubStateArray(input._get_aArray)[0]._get_aSubString);
    subArray                   := jsonaArray.InsertArray(1);   // How to specify the name of this array ? 
for n := 0 to length(hasAccessToFolders) -1 do 
subArray.Insert(n, mapperStateArray(VirksomhedItemsStateArray(SupportedTypeSubStateArray(input._get_aArray)[0]._get_aSubArray)[0].hasAccessToFolders)[n]);
jsonaArray.Insert(2, CompanyItemState._get_accessToInvoice);
output := jsonObj.ToJSON({Compact:=}False);
finally
    jsonObj.Free;
end;

and the output is as follows:

{
    "params": {
        "weblognavn": "myweblognavn",
        "sessionid": "07.16.35",
        "kredsnr": 4,
        "Sysnr": 179,
        "ejdnr": 1000
    },
    "facadeClassName": "dk.vs.int.IntFac",
    "methodName": "typesTest",
    "args": [
        {
            "aChar": "c",
            "aString": "aString",
            "aDouble": 3.14159265358979,
            "aInt": 7,
            "aLong": 2147483647,
            "aBool": true,
            "aSpecialEnum": 0,
            "aEnum": 9,
            "aNotherEnum": 1,
            "aBigEnum": 32,
            "aArray": [
                [
                    "aSubString",
                    [
                        1,
                        2,
                        3
                    ],
                    false
                ]
            ]
        }
    ]
}

I might have got it all wrong, so any ideas would be highly appreciated.

0

There are 0 answers