Sample code for 30+ languages & platforms
Delphi ActiveX

Modify Parts of JSON Document

See more JSON Examples

Demonstrates how to modify parts of a JSON document. This example uses the following JSON document:
{
   "fruit": [
      	{
         "kind": "apple",
	 "count": 24,
	 "fresh": true,
	 "extraInfo": null,
	 "listA": [ "abc", 1, null, false ],
	 "objectB": { "animal" : "monkey" }
      	},
	{
         "kind": "pear",
	 "count": 18,
	 "fresh": false,
	 "extraInfo": null
	 "listA": [ "xyz", 24, null, true ],
	 "objectB": { "animal" : "lemur" }
	}
    ],
    "list" : [ "banana", 12, true, null, "orange", 12.5, { "ticker": "AAPL" }, [ 1, 2, 3, 4, 5 ] ],
    "alien" : true
}

Chilkat Delphi ActiveX Downloads

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

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
json: TChilkatJsonObject;
listA: TChilkatJsonArray;
bNull: Integer;
tickerObj: TChilkatJsonObject;
aa: TChilkatJsonArray;
aFruit: TChilkatJsonArray;
appleObj: TChilkatJsonObject;
pearObj: TChilkatJsonObject;

begin
success := 0;

json := TChilkatJsonObject.Create(Self);

// Load the JSON from a file.
success := json.LoadFile('qa_data/json/modifySample.json');
if (success = 0) then
  begin
    Memo1.Lines.Add(json.LastErrorText);
    Exit;
  end;

// This example will not check for errors (i.e. null / false / 0 return values)...

// Get the "list" array:

listA := TChilkatJsonArray.Create(Self);

json.ArrayOf2('list',listA.ControlInterface);

// Modify values in the list.

// Change banana to plantain
success := listA.SetStringAt(0,'plantain');

// Change 12 to 24
success := listA.SetIntAt(1,24);

// Change true to false
success := listA.SetBoolAt(2,0);

// Is the 3rd item null?
bNull := listA.IsNullAt(3);

// Change "orange" to 32.
success := listA.SetIntAt(4,32);

// Change 12.5 to 31.2
success := listA.SetNumberAt(5,'31.2');

// Replace the { "ticker" : "AAPL" } object with { "ticker" : "GOOG" }
// Do this by deleting, then inserting a new object at the same location.
success := listA.DeleteAt(6);
tickerObj := TChilkatJsonObject.Create(Self);
listA.AddObjectAt2(6,tickerObj.ControlInterface);

success := tickerObj.AppendString('ticker','GOOG');

// Replace "[ 1, 2, 3, 4, 5 ]" with "[ "apple", 22, true, null, 1080.25 ]"
success := listA.DeleteAt(7);
aa := TChilkatJsonArray.Create(Self);
listA.AddArrayAt2(7,aa.ControlInterface);

success := aa.AddStringAt(-1,'apple');
success := aa.AddIntAt(-1,22);
success := aa.AddBoolAt(-1,1);
success := aa.AddNullAt(-1);
success := aa.AddNumberAt(-1,'1080.25');

// Get the "fruit" array
aFruit := TChilkatJsonArray.Create(Self);
json.ArrayAt2(0,aFruit.ControlInterface);

// Get the 1st element:
appleObj := TChilkatJsonObject.Create(Self);
aFruit.ObjectAt2(0,appleObj.ControlInterface);

// Modify values by member name:
success := appleObj.SetStringOf('fruit','fuji_apple');
success := appleObj.SetIntOf('count',46);
success := appleObj.SetBoolOf('fresh',0);
success := appleObj.SetStringOf('extraInfo','developed by growers at the Tohoku Research Station in Fujisaki');

// Modify values by index:

pearObj := TChilkatJsonObject.Create(Self);
aFruit.ObjectAt2(1,pearObj.ControlInterface);

success := pearObj.SetStringAt(0,'bartlett_pear');
success := pearObj.SetIntAt(1,12);
success := pearObj.SetBoolAt(2,0);
success := pearObj.SetStringAt(3,'harvested in late August to early September');

json.EmitCompact := 0;
Memo1.Lines.Add(json.Emit());
end;