Sample code for 30+ languages & platforms
Delphi DLL

JSON Estimote Data

See more JSON Examples

Demonstrates accessing some data from an Estimote REST API response. The Estimate REST API responds with a JSON array (i.e. something beginning with "[" and ending with "]"). To parse, this must be made into a JSON object by prepending "{"*":" and appending "}".

This example uses the following JSON object:

{"*":[{
        "id" : "B9407F30-F5F8-466E-AFF9-25556B57FE6D:28203:50324",
        "uuid" : "B9407F30-F5F8-466E-AFF9-25556B57FE6D",
        "major" : 28203,
        "minor" : 50324,
        "mac" : "dd6fc4946e2b",
        "settings" : {
            "battery" : 100,
            "interval" : 950,
            "hardware" : "D3.4",
            "firmware" : "A3.2.0",
            "basic_power_mode" : true,
            "smart_power_mode" : true,
            "timezone" : "America/Los_Angeles",
            "security" : false,
            "motion_detection" : true,
            "latitude": 37.7979,
            "longitude": -122.4408,
            "conditional_broadcasting" : "flip to stop",
            "broadcasting_scheme" : "estimote",
            "range" : -12,
            "power" : -12,
            "firmware_deprecated" : false,
            "firmware_newest" : true,
            "location" : null
        },
        "color" : "blueberry",
        "context_id" : 339488,
        "name" : "blueberry ibeacon1",
        "battery_life_expectancy_in_days" : 1377,
        "tags" : []
    }, {
        "id" : "B9407F30-F5F8-466E-AFF9-25556B57FE6D:25845:21739",
        "uuid" : "B9407F30-F5F8-466E-AFF9-25556B57FE6D",
        "major" : 25845,
        "minor" : 21739,
        "mac" : "ff5454eb64f5",
        "settings" : {
            "battery" : 100,
            "interval" : 950,
            "hardware" : "D3.4",
            "firmware" : "A3.2.0",
            "basic_power_mode" : false,
            "smart_power_mode" : true,
            "timezone" : "America/Los_Angeles",
            "security" : false,
            "motion_detection" : true,
            "conditional_broadcasting" : "flip to stop",
            "broadcasting_scheme" : "estimote",
            "range" : -12,
            "power" : -12,
            "firmware_deprecated" : false,
            "firmware_newest" : true,
            "location" : null
        },
        "color" : "blueberry",
        "context_id" : 339483,
        "name" : "blueberry2",
        "battery_life_expectancy_in_days" : 1168,
        "tags" : []
    }
]}

Chilkat Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, JsonObject;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
json: HCkJsonObject;
batteryVal: Integer;
timeZone: PWideChar;
rangeVal: Integer;
longitudeStr: PWideChar;

begin
success := False;

json := CkJsonObject_Create();
CkJsonObject_putEmitCompact(json,False);

// Assume the file contains the data as shown above..
success := CkJsonObject_LoadFile(json,'qa_data/json/estimote.json');
if (success <> True) then
  begin
    Memo1.Lines.Add(CkJsonObject__lastErrorText(json));
    Exit;
  end;

// To get the value for "settings.battery" for the 1st array object:
batteryVal := CkJsonObject_IntOf(json,'*[0].settings.battery');
Memo1.Lines.Add('battery: ' + IntToStr(batteryVal));

// To get the value for "settings.timezon" for the 1st array object:
timeZone := CkJsonObject__stringOf(json,'*[0].settings.timezone');
Memo1.Lines.Add('timezone: ' + timeZone);

// To get the "settings.range" for the 2nd array object:
rangeVal := CkJsonObject_IntOf(json,'*[1].settings.range');
Memo1.Lines.Add('range: ' + IntToStr(rangeVal));

// To  get the "settings.longitude" for the 1st array object:
// Note: Any primitie value can be retrieved as as string: integers, floating point numbers, booleans, etc.
longitudeStr := CkJsonObject__stringOf(json,'*[0].settings.longitude');
Memo1.Lines.Add('longitude: ' + longitudeStr);

CkJsonObject_Dispose(json);

end;