Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

Google Calendar -- Generate Event JSON

See more Google Calendar Examples

Demonstrates how to generate the JSON for an event resource. This code can be used as a template for generating JSON to insert new events.

See https://developers.google.com/google-apps/calendar/v3/reference/events#resource for details about the Calender Event Resource JSON.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.JsonObject;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  json: TJsonObject;

begin
  //  This example (below) generates the following JSON:
  //  Note: Your application code would construct the event JSON using your
  //  desired subset of members.  For boolean values, you would pass True or False.
  //  For date or date/time values, you would pass the appropriately formatted date/time string.

  //  {
  //    "kind": "calendar#event",
  //    "etag": "some_etag",
  //    "id": "string value",
  //    "status": "string value",
  //    "htmlLink": "string value",
  //    "created": "datetime value",
  //    "updated": "datetime value",
  //    "summary": "string value",
  //    "description": "string value",
  //    "location": "string value",
  //    "colorId": "string value",
  //    "creator": {
  //      "id": "string value",
  //      "email": "string value",
  //      "displayName": "string value",
  //      "self": true
  //    },
  //    "organizer": {
  //      "id": "string value",
  //      "email": "string value",
  //      "displayName": "string value",
  //      "self": true
  //    },
  //    "start": {
  //      "date": "date value",
  //      "dateTime": "datetime value",
  //      "timeZone": "string value"
  //    },
  //    "end": {
  //      "date": "date value",
  //      "dateTime": "datetime value",
  //      "timeZone": "string value"
  //    },
  //    "endTimeUnspecified": true,
  //    "recurrence": [
  //      "string value"
  //    ],
  //    "recurringEventId": "string value",
  //    "originalStartTime": {
  //      "date": "date value",
  //      "dateTime": "datetime value",
  //      "timeZone": "string value"
  //    },
  //    "transparency": "string value",
  //    "visibility": "string value",
  //    "iCalUID": "string value",
  //    "sequence": 1234,
  //    "attendees": [
  //      {
  //        "id": "string value",
  //        "email": "string value",
  //        "displayName": "string value",
  //        "organizer": true,
  //        "self": true,
  //        "resource": true,
  //        "optional": true,
  //        "responseStatus": "string value",
  //        "comment": "string value",
  //        "additionalGuests": 1234
  //      },
  //      {
  //        "id": "string value",
  //        "email": "string value",
  //        "displayName": "string value",
  //        "organizer": true,
  //        "self": true,
  //        "resource": true,
  //        "optional": true,
  //        "responseStatus": "string value",
  //        "comment": "string value",
  //        "additionalGuests": 1234
  //      }
  //    ],
  //    "attendeesOmitted": true,
  //    "extendedProperties": {
  //      "private": {
  //        "someKey": "string value"
  //      },
  //      "shared": {
  //        "someKey": "string value"
  //      }
  //    },
  //    "hangoutLink": "string value",
  //    "gadget": {
  //      "type": "string value",
  //      "title": "string value",
  //      "link": "string value",
  //      "iconLink": "string value",
  //      "width": 1234,
  //      "height": 1234,
  //      "display": "string value",
  //      "preferences": {
  //        "someKey": "string value"
  //      }
  //    },
  //    "anyoneCanAddSelf": true,
  //    "guestsCanInviteOthers": true,
  //    "guestsCanModify": true,
  //    "guestsCanSeeOtherGuests": true,
  //    "privateCopy": true,
  //    "locked": true,
  //    "reminders": {
  //      "useDefault": true,
  //      "overrides": [
  //        {
  //          "method": "string value",
  //          "minutes": 1234
  //        }
  //      ]
  //    },
  //    "source": {
  //      "url": "string value",
  //      "title": "string value"
  //    },
  //    "attachments": [
  //      {
  //        "fileUrl": "string value",
  //        "title": "string value",
  //        "mimeType": "string value",
  //        "iconLink": "string value",
  //        "fileId": "string value"
  //      },
  //      {
  //        "fileUrl": "string value",
  //        "title": "string value",
  //        "mimeType": "string value",
  //        "iconLink": "string value",
  //        "fileId": "string value"
  //      }
  //    ]
  //  }

  json := TJsonObject.Create;
  json.UpdateString('kind','calendar#event');
  json.UpdateString('etag','some_etag');
  json.UpdateString('id','string value');
  json.UpdateString('status','string value');
  json.UpdateString('htmlLink','string value');
  json.UpdateString('created','datetime value');
  json.UpdateString('updated','datetime value');
  json.UpdateString('summary','string value');
  json.UpdateString('description','string value');
  json.UpdateString('location','string value');
  json.UpdateString('colorId','string value');
  json.UpdateString('creator.id','string value');
  json.UpdateString('creator.email','string value');
  json.UpdateString('creator.displayName','string value');
  json.UpdateBool('creator.self',True);
  json.UpdateString('organizer.id','string value');
  json.UpdateString('organizer.email','string value');
  json.UpdateString('organizer.displayName','string value');
  json.UpdateBool('organizer.self',True);
  json.UpdateString('start.date','date value');
  json.UpdateString('start.dateTime','datetime value');
  json.UpdateString('start.timeZone','string value');
  json.UpdateString('end.date','date value');
  json.UpdateString('end.dateTime','datetime value');
  json.UpdateString('end.timeZone','string value');
  json.UpdateBool('endTimeUnspecified',True);
  json.UpdateString('recurrence[0]','string value');
  json.UpdateString('recurringEventId','string value');
  json.UpdateString('originalStartTime.date','date value');
  json.UpdateString('originalStartTime.dateTime','datetime value');
  json.UpdateString('originalStartTime.timeZone','string value');
  json.UpdateString('transparency','string value');
  json.UpdateString('visibility','string value');
  json.UpdateString('iCalUID','string value');
  json.UpdateNumber('sequence','1234');

  json.UpdateString('attendees[0].id','string value');
  json.UpdateString('attendees[0].email','string value');
  json.UpdateString('attendees[0].displayName','string value');

  //  Note: We could alternately specify an index using "i", which allows
  //  for an application to construct using a loop with a variable..
  json.I := 0;
  json.UpdateBool('attendees[i].organizer',True);
  json.UpdateBool('attendees[i].self',True);
  json.UpdateBool('attendees[i].resource',True);
  json.UpdateBool('attendees[i].optional',True);
  json.UpdateString('attendees[i].responseStatus','string value');
  json.UpdateString('attendees[i].comment','string value');
  json.UpdateNumber('attendees[i].additionalGuests','1234');

  json.I := 1;
  json.UpdateString('attendees[i].id','string value');
  json.UpdateString('attendees[i].email','string value');
  json.UpdateString('attendees[i].displayName','string value');

  json.UpdateBool('attendees[1].organizer',True);
  json.UpdateBool('attendees[1].self',True);
  json.UpdateBool('attendees[1].resource',True);
  json.UpdateBool('attendees[1].optional',True);
  json.UpdateString('attendees[1].responseStatus','string value');
  json.UpdateString('attendees[1].comment','string value');
  json.UpdateNumber('attendees[1].additionalGuests','1234');

  json.UpdateBool('attendeesOmitted',True);
  json.UpdateString('extendedProperties.private.someKey','string value');
  json.UpdateString('extendedProperties.shared.someKey','string value');
  json.UpdateString('hangoutLink','string value');
  json.UpdateString('gadget.type','string value');
  json.UpdateString('gadget.title','string value');
  json.UpdateString('gadget.link','string value');
  json.UpdateString('gadget.iconLink','string value');
  json.UpdateNumber('gadget.width','1234');
  json.UpdateNumber('gadget.height','1234');
  json.UpdateString('gadget.display','string value');
  json.UpdateString('gadget.preferences.someKey','string value');
  json.UpdateBool('anyoneCanAddSelf',True);
  json.UpdateBool('guestsCanInviteOthers',True);
  json.UpdateBool('guestsCanModify',True);
  json.UpdateBool('guestsCanSeeOtherGuests',True);
  json.UpdateBool('privateCopy',True);
  json.UpdateBool('locked',True);
  json.UpdateBool('reminders.useDefault',True);
  json.UpdateString('reminders.overrides[0].method','string value');
  json.UpdateNumber('reminders.overrides[0].minutes','1234');
  json.UpdateString('source.url','string value');
  json.UpdateString('source.title','string value');
  json.UpdateString('attachments[0].fileUrl','string value');
  json.UpdateString('attachments[0].title','string value');
  json.UpdateString('attachments[0].mimeType','string value');
  json.UpdateString('attachments[0].iconLink','string value');
  json.UpdateString('attachments[0].fileId','string value');
  json.UpdateString('attachments[1].fileUrl','string value');
  json.UpdateString('attachments[1].title','string value');
  json.UpdateString('attachments[1].mimeType','string value');
  json.UpdateString('attachments[1].iconLink','string value');
  json.UpdateString('attachments[1].fileId','string value');

  json.EmitCompact := False;
  WriteLn(json.Emit());


  json.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.