Sample code for 30+ languages & platforms
Delphi ActiveX

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 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
json: TChilkatJsonObject;

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 1 or 0.
// 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 := TChilkatJsonObject.Create(Self);
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',1);
json.UpdateString('organizer.id','string value');
json.UpdateString('organizer.email','string value');
json.UpdateString('organizer.displayName','string value');
json.UpdateBool('organizer.self',1);
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',1);
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',1);
json.UpdateBool('attendees[i].self',1);
json.UpdateBool('attendees[i].resource',1);
json.UpdateBool('attendees[i].optional',1);
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',1);
json.UpdateBool('attendees[1].self',1);
json.UpdateBool('attendees[1].resource',1);
json.UpdateBool('attendees[1].optional',1);
json.UpdateString('attendees[1].responseStatus','string value');
json.UpdateString('attendees[1].comment','string value');
json.UpdateNumber('attendees[1].additionalGuests','1234');

json.UpdateBool('attendeesOmitted',1);
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',1);
json.UpdateBool('guestsCanInviteOthers',1);
json.UpdateBool('guestsCanModify',1);
json.UpdateBool('guestsCanSeeOtherGuests',1);
json.UpdateBool('privateCopy',1);
json.UpdateBool('locked',1);
json.UpdateBool('reminders.useDefault',1);
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 := 0;
Memo1.Lines.Add(json.Emit());
end;