DataFlex
DataFlex
Get the Root of a JSON Document
See more JSON Examples
Demonstrates how to get back to the JSON root object from anywhere in the JSON document. This example uses the following JSON document:
{
"flower": "tulip",
"abc":
{
"x": [
{ "a" : 1 },
{ "b1" : 100, "b2" : 200 },
{ "c" : 3 }
],
"y": 200,
"z": 200
}
}
Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoJson
String sJsonStr
Variant vAbcObj
Handle hoAbcObj
Variant vXArray
Handle hoXArray
Variant vBObj
Handle hoBObj
Variant vDocRoot
Handle hoDocRoot
String sTemp1
Integer iTemp1
Move False To iSuccess
Get Create (RefClass(cComChilkatJsonObject)) To hoJson
If (Not(IsComObjectCreated(hoJson))) Begin
Send CreateComObject of hoJson
End
Move '{"flower": "tulip","abc":{"x": [{ "a" : 1 },{ "b1" : 100, "b2" : 200 },{ "c" : 3 }],"y": 200,"z": 200}}' To sJsonStr
Get ComLoad Of hoJson sJsonStr To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoJson To sTemp1
Showln sTemp1
Procedure_Return
End
// Get the "abc" object.
Get Create (RefClass(cComChilkatJsonObject)) To hoAbcObj
If (Not(IsComObjectCreated(hoAbcObj))) Begin
Send CreateComObject of hoAbcObj
End
Get pvComObject of hoAbcObj to vAbcObj
Get ComObjectOf2 Of hoJson "abc" vAbcObj To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoJson To sTemp1
Showln sTemp1
Procedure_Return
End
// Side note: The JSON of a sub-part of the document can be emitted from any JSON object:
Set ComEmitCompact Of hoAbcObj To False
Get ComEmit Of hoAbcObj To sTemp1
Showln sTemp1
// Navigate to the "x" array
Get Create (RefClass(cComChilkatJsonArray)) To hoXArray
If (Not(IsComObjectCreated(hoXArray))) Begin
Send CreateComObject of hoXArray
End
Get pvComObject of hoXArray to vXArray
Get ComArrayOf2 Of hoAbcObj "x" vXArray To iSuccess
// Navigate to the 2nd object contained within the array. This contains members b1 and b2
Get Create (RefClass(cComChilkatJsonObject)) To hoBObj
If (Not(IsComObjectCreated(hoBObj))) Begin
Send CreateComObject of hoBObj
End
Get pvComObject of hoBObj to vBObj
Get ComObjectAt2 Of hoXArray 1 vBObj To iSuccess
// Show that we're at "b1/b2".
// The value of "b1" should be "200"
Get ComIntOf Of hoBObj "b2" To iTemp1
Showln "b2 = " iTemp1
// Now go back to the JSON doc root:
Get Create (RefClass(cComChilkatJsonObject)) To hoDocRoot
If (Not(IsComObjectCreated(hoDocRoot))) Begin
Send CreateComObject of hoDocRoot
End
Get pvComObject of hoDocRoot to vDocRoot
Get ComGetDocRoot2 Of hoBObj vDocRoot To iSuccess
// We'll skip the null check and assume it's non-null...
// Pretty-print the JSON doc from the root to show that this is indeed the root.
Set ComEmitCompact Of hoDocRoot To False
Get ComEmit Of hoDocRoot To sTemp1
Showln sTemp1
End_Procedure