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.