Receiving Nested JSON Objects and JSON Arrays

JsonGetObjectProperty, JsonGetArrayProperty

These functions retrieve the value of a specified property from a JSON object. If the property does not exist in the JSON object or the property does not contain a JSON object value or a JSON array value, nothing happens.

JSON objects and JSON arrays that are received by these functions can be removed from memory with JsonFree. However, objects and arrays are automatically deleted when you call JsonFree on the parent JSON object.

dcltrans 
  transaction TMain 
  var 
    jsonParentString : string;
    jsonParent       : number;
    jsonArray        : number;
    jsonObject       : number;
  begin
    jsonParentString :=
"{"
  "\"NestedObjectProperty\": {"
    "\"Name\": \"Nested Object\""
    "},"
  "\NestedArrayProperty\": [10,20,true,40]"
"}";
    jsonParent := JsonParse(jsonParentString);

    JsonGetArrayProperty(jsonParent, "NestedArrayProperty", jsonArray);
    JsonGetObjectProperty(jsonParent, "NestedObjectProperty", jsonObject);
    
    ...
    
    JsonFree(jsonParent);
  end TMain;

JsonArrayGetObjectElement, JsonArrayGetArrayElement

These functions retrieve the value of a specified element from a JSON array. Their behavior is similar to the behavior of the functions JsonGetObjectProperty and JsonGetArrayProperty. The only difference is that they return specified elements from a JSON array instead of properties from a JSON object.

dcltrans
  transaction TMain
  var
    jsonParentString : string;
    jsonParent       : number;
    jsonArray        : number;
    jsonObject       : number;
  begin
    jsonParentString :=
"["
  "{"
    "\"Name\": \"Nested Object\""
  "},"
  "[10,20,true,40]"
"]";
    jsonParent := JsonParse(jsonParentString);
    
    JsonArrayGetArrayElement(jsonParent, "NestedArrayProperty", jsonArray);
    JsonArrayGetObjectElement(jsonParent, "NestedObjectProperty", jsonObject);
    
    ... 
    
    JsonFree(jsonParent);
  end TMain;