I suppose the advantage would be just prepackaging the intermediate object this way so your JSON routine can figure out the structure for me...
Yes - you can create a top level object that contains other objects or array/collection/wwCollection instances to represent the JSON arrays. I would presume that whatever you're sending the data to is going to expect a single object.
+++ Rick ---
How would one construct an object representing several master/detail (one to many) records - each with several related records? Nested arrays? Nested Collections?
Seems overly complicated... but perhaps I'm missing something. Perhaps you can point to an example... Eager to learn.
What I ended up doing is generating JSON for the master records, and then looping through to create a child records cursor for each master record, generating JSON from that, and using StringReplace() to insert the children into the master JSON string:
SELECT ..., "Images4"+Listings.ListCode AS Images ;FROM ./Condo/Listings ;
INTO CURSOR TQuery READWRITE
lcReturnValue = loSerializer.Serialize("cursor:TQuery")SCANSELECT ..., TRANSFORM(ImageList.ImgCode) + [.] + ALLTRIM(ImageList.ImgType) AS ImgSrc ;FROM ImageList ;
WHERE ImageList.ListCode = TQuery.ListCode ;
INTO CURSOR TImageList
lcImageList = loSerializer.Serialize("cursor:TImageList")
lcImageList = STRTRAN(lcImageList,["Rows"],["image"])
lcTextToReplace = ["Images4] + TQuery.ListCode + ["]
lcReturnValue = STRTRAN(lcReturnValue,lcTextToReplace,lcImageList)SELECT TQueryENDSCAN
You should be able to keep using it.
When you say nesting what do you mean though? Can't you just construct one Fox object and then serialize the whole thing at once?
+++ Rick ---
I'm going to be nesting some JSON strings. Do I need to Destroy and re-create wwJSONSerializer for each pass with a newly populated cursor, or can I just repeatedly call Serialize() and get clean results from the object?
TIA