Sample code for 30+ languages & platforms
Perl

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 Perl Downloads

Perl
use chilkat();

# 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 = chilkat::CkJsonObject->new();
$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->put_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->put_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->put_EmitCompact(0);
print $json->emit() . "\r\n";