JSON example

 execute ibeblock
 as
 begin
   SimpleJsonData =
   '{
     "FirstObject" : { "IntValue" : 123456,
                       "StringValue" : "First line" },
     "SecondObject" : { "IntValue" : 654321,
                        "StringValue" : "First line\nSecond line\nThird line" },
     "ThirdObject" : { "NumValue" : 123.456,
                       "Items" : [ 123,
                                   123.123,
                                   null,
                                   "some \"string\"",
                                   false ] }
   }';

   JsonRoot = ibec_json_Parse(SimpleJsonData);
   try
     Node = ibec_json_SelectNode(JsonRoot, 'SecondObject\StringValue', 0);  -- case sensitive search
     if (Node is not null) then
     begin
       v = ibec_json_GetNodeValue(Node, TRUE);
       ibec_ShowMessage(v);
     end;

     -- Iterating arrays, using Json namespace functions and constants

     sOut = 'List of array values:' + ibec_CRLF() +
         '======================================';
     ArrayNode = @Json.SelectNode(JsonRoot, 'thirdobject\items', @Json.SEARCH_IGNORE_CASE); -- case insensitive search
     if (ArrayNode is not null) then
     begin
       NodeType = @Json.NodeType(ArrayNode);
       if (NodeType = @Json.TYPE_ARRAY) then
       begin
         iCount = @Json.ChildCount(ArrayNode);
         for i = 0 to (iCount - 1) do
         begin
           ChildNode = @Json.SelectNode(ArrayNode, i, @Json.SEARCH_BY_INDEX);
           vValue = @Json.GetNodeValue(ChildNode, TRUE);
           s = ibec_IIF(vValue is null, '<NULL>', ibec_Cast(vValue, __typeString));
           sOut .= ibec_CRLF() + 'Value ' + ibec_Cast(i, __typeString) + ': ' + s;
         end;
         ibec_ShowMessage(sOut);
       end;
     end;

   finally
     ibec_json_Free(JsonRoot);
   end
 end

See also:
Working with JSON data

back to top of page
<< IMAP example | IBEBlock | Accessing the input and return parameters when executing in a batch file >>