How do I parse a jsonObject which is in a given format in Apex?
I need List<String> from the items array which contains the id attribute. What is some appropriate method?
For parsing it, I try to create a class with code:
public class JSON2Apex {
public class Items {
public String kind;
public String etag;
public String id;
public String status;
public String htmlLink;
public String created;
public String updated;
public String summary;
public String description;
public String location;
public Creator creator;
public Creator organizer;
public Start start;
public Start end;
public String iCalUID;
public Integer sequence;
public Reminders reminders;
}
public class Reminders {
public Boolean useDefault;
}
public class Start {
public String dateTime;
}
public class Creator {
public String email;
public String displayName;
public Boolean self;
}
public String kind;
public String etag;
public String summary;
public String updated;
public String timeZone;
public String accessRole;
public List<DefaultReminders> defaultReminders;
public List<Items> items;
public class DefaultReminders {
public String method;
public Integer minutes;
}
}
But in this class it is showing some reserved keyword is user like end , dateTime etc so can't proceed further with this approach.
{
"kind": "calendar#events",
"etag": "\"ZrhdJMCgpoUK_a5fT7XOC6xn46g/jAScaUzsyk9nbyyvTc1Wa3-tulA\"",
"summary": "riteshmehandiratta@gmail.com",
"updated": "2013-02-16T16:23:20.057Z",
"timeZone": "Asia/Calcutta",
"accessRole": "owner",
"defaultReminders": [
{
"method": "email",
"minutes": 10
},
{
"method": "popup",
"minutes": 10
}
],
"items": [
{
"kind": "calendar#event",
"etag": "\"ZrhdJMCgpoUK_a5fT7XOC6xn46g/Z2NhbDAwMDAxMzU2MTQ1NTg1NjYxMDAw\"",
"id": "ngo4lfq6q7c4dm8bej7m47e5lc",
"status": "confirmed",
"htmlLink": "https://www.google.com/calendar/event?eid=bmdvNGxmcTZxN2M0ZG04YmVqN200N2U1bGMgcml0ZXNobWVoYW5kaXJhdHRhQG0",
"created": "2012-12-22T03:04:01.000Z",
"updated": "2012-12-22T03:06:25.661Z",
"summary": "hello",
"description": "hgjgjh",
"location": "hkhkhk",
"creator": {
"email": "riteshmehandiratta@gmail.com",
"displayName": "RITESH MEHANDIRATTA",
"self": true
},
"organizer": {
"email": "riteshmehandiratta@gmail.com",
"displayName": "RITESH MEHANDIRATTA",
"self": true
},
"start": {
"dateTime": "2013-01-01T10:00:00+05:30"
},
"end": {
"dateTime": "2013-01-15T00:00:00+05:30"
},
"iCalUID": "ngo4lfq6q7c4dm8bej7m47e5lc@google.com",
"sequence": 1,
"reminders": {
"useDefault": true
}
},
{
"kind": "calendar#event",
"etag": "\"ZrhdJMCgpoUK_a5fT7XOC6xn46g/Z2NhbDAwMDAxMzYxMDMxNTg1OTYzMDAw\"",
"id": "oap7nr7ukjug6euo24kvhmfbm0",
"status": "confirmed",
"htmlLink": "https://www.google.com/calendar/event?eid=b2FwN25yN3VranVnNmV1bzI0a3ZobWZibTAgcml0ZXNobWVoYW5kaXJhdHRhQG0",
"created": "2013-02-16T16:19:45.000Z",
"updated": "2013-02-16T16:19:45.963Z",
"summary": "Hello World",
"creator": {
"email": "riteshmehandiratta@gmail.com",
"displayName": "RITESH MEHANDIRATTA",
"self": true
},
"organizer": {
"email": "riteshmehandiratta@gmail.com",
"displayName": "RITESH MEHANDIRATTA",
"self": true
},
"start": {
"dateTime": "2013-02-11T11:00:00+05:30"
},
"end": {
"dateTime": "2013-02-11T12:00:00+05:30"
},
"iCalUID": "oap7nr7ukjug6euo24kvhmfbm0@google.com",
"sequence": 0,
"reminders": {
"useDefault": true
}
},
{
"kind": "calendar#event",
"etag": "\"ZrhdJMCgpoUK_a5fT7XOC6xn46g/Z2NhbDAwMDAxMzYxMDMxNjQxMDYzMDAw\"",
"id": "k2mvqecqdgoudt6fl4e5hhqna0",
"status": "confirmed",
"htmlLink": "https://www.google.com/calendar/event?eid=azJtdnFlY3FkZ291ZHQ2Zmw0ZTVoaHFuYTAgcml0ZXNobWVoYW5kaXJhdHRhQG0",
"created": "2013-02-16T16:20:41.000Z",
"updated": "2013-02-16T16:20:41.063Z",
"summary": "Hello Wol",
"creator": {
"email": "riteshmehandiratta@gmail.com",
"displayName": "RITESH MEHANDIRATTA",
"self": true
},
"organizer": {
"email": "riteshmehandiratta@gmail.com",
"displayName": "RITESH MEHANDIRATTA",
"self": true
},
"start": {
"dateTime": "2013-02-11T13:00:00+05:30"
},
"end": {
"dateTime": "2013-02-11T14:00:00+05:30"
},
"iCalUID": "k2mvqecqdgoudt6fl4e5hhqna0@google.com",
"sequence": 0,
"reminders": {
"useDefault": true
}
},
{
"kind": "calendar#event",
"etag": "\"ZrhdJMCgpoUK_a5fT7XOC6xn46g/Z2NhbDAwMDAxMzYxMDMxNjUyNDE1MDAw\"",
"id": "0n2if07oo9pvfdnf7f0a6cldns",
"status": "confirmed",
"htmlLink": "https://www.google.com/calendar/event?eid=MG4yaWYwN29vOXB2ZmRuZjdmMGE2Y2xkbnMgcml0ZXNobWVoYW5kaXJhdHRhQG0",
"created": "2013-02-16T16:20:52.000Z",
"updated": "2013-02-16T16:20:52.415Z",
"summary": "Hello World1",
"creator": {
"email": "riteshmehandiratta@gmail.com",
"displayName": "RITESH MEHANDIRATTA",
"self": true
},
"organizer": {
"email": "riteshmehandiratta@gmail.com",
"displayName": "RITESH MEHANDIRATTA",
"self": true
},
"start": {
"dateTime": "2013-02-11T15:30:00+05:30"
},
"end": {
"dateTime": "2013-02-11T16:30:00+05:30"
},
"iCalUID": "0n2if07oo9pvfdnf7f0a6cldns@google.com",
"sequence": 0,
"reminders": {
"useDefault": true
}
},
{
"kind": "calendar#event",
"etag": "\"ZrhdJMCgpoUK_a5fT7XOC6xn46g/Z2NhbDAwMDAxMzYxMDMxNzcwNDMzMDAw\"",
"id": "r365lrv775bqjiplmaqjro9grc",
"status": "confirmed",
"htmlLink": "https://www.google.com/calendar/event?eid=cjM2NWxydjc3NWJxamlwbG1hcWpybzlncmMgcml0ZXNobWVoYW5kaXJhdHRhQG0",
"created": "2013-02-16T16:22:50.000Z",
"updated": "2013-02-16T16:22:50.433Z",
"creator": {
"email": "riteshmehandiratta@gmail.com",
"displayName": "RITESH MEHANDIRATTA",
"self": true
},
"organizer": {
"email": "riteshmehandiratta@gmail.com",
"displayName": "RITESH MEHANDIRATTA",
"self": true
},
"start": {
"dateTime": "2013-02-11T14:30:00+05:30"
},
"end": {
"dateTime": "2013-02-11T15:30:00+05:30"
},
"iCalUID": "r365lrv775bqjiplmaqjro9grc@google.com",
"sequence": 0,
"reminders": {
"useDefault": true
}
}
]
}
You can use the
deserializeUntyped
function to work with the JSON in plain object/list/map objects. You just need to remember to cast everything to the expected type (exactly as you would in Java). So to access the id field of each item, you'd dowhich generates this debug output: