Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parsing JSON Object in Salesforce Apex

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": "[email protected]",
    "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": "[email protected]",
                "displayName": "RITESH MEHANDIRATTA",
                "self": true
            },
            "organizer": {
                "email": "[email protected]",
                "displayName": "RITESH MEHANDIRATTA",
                "self": true
            },
            "start": {
                "dateTime": "2013-01-01T10:00:00+05:30"
            },
            "end": {
                "dateTime": "2013-01-15T00:00:00+05:30"
            },
            "iCalUID": "[email protected]",
            "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": "[email protected]",
                "displayName": "RITESH MEHANDIRATTA",
                "self": true
            },
            "organizer": {
                "email": "[email protected]",
                "displayName": "RITESH MEHANDIRATTA",
                "self": true
            },
            "start": {
                "dateTime": "2013-02-11T11:00:00+05:30"
            },
            "end": {
                "dateTime": "2013-02-11T12:00:00+05:30"
            },
            "iCalUID": "[email protected]",
            "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": "[email protected]",
               "displayName": "RITESH MEHANDIRATTA",
               "self": true
           },
           "organizer": {
               "email": "[email protected]",
               "displayName": "RITESH MEHANDIRATTA",
               "self": true
           },
           "start": {
               "dateTime": "2013-02-11T13:00:00+05:30"
           },
           "end": {
               "dateTime": "2013-02-11T14:00:00+05:30"
           },
           "iCalUID": "[email protected]",
           "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": "[email protected]",
                "displayName": "RITESH MEHANDIRATTA",
                "self": true
            },
            "organizer": {
                "email": "[email protected]",
                "displayName": "RITESH MEHANDIRATTA",
                "self": true
            },
            "start": {
                "dateTime": "2013-02-11T15:30:00+05:30"
            },
            "end": {
                "dateTime": "2013-02-11T16:30:00+05:30"
            },
            "iCalUID": "[email protected]",
            "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": "[email protected]",
                "displayName": "RITESH MEHANDIRATTA",
                "self": true
            },
            "organizer": {
                "email": "[email protected]",
                "displayName": "RITESH MEHANDIRATTA",
                "self": true
            },
            "start": {
                "dateTime": "2013-02-11T14:30:00+05:30"
            },
            "end": {
                "dateTime": "2013-02-11T15:30:00+05:30"
            },
            "iCalUID": "[email protected]",
            "sequence": 0,
            "reminders": {
                "useDefault": true
            }
        }
    ]
}
like image 760
Ritesh Mehandiratta Avatar asked Feb 16 '13 16:02

Ritesh Mehandiratta


People also ask

How do I parse JSON in Apex salesforce?

Use the JSONParser class methods to parse JSON-encoded content. These methods enable you to parse a JSON-formatted response that's returned from a call to an external service, such as a web service callout.

How do I deserialize JSON in Apex?

I suggest you paste your JSON into http://json2apex.herokuapp.com/ and try the generated code. This tool generates simple Apex classes with a field per JSON field and then you can parse with a single JSON. deserialize.

How do I serialize a JSON object in salesforce?

description = 'test description'; //add more data into fields as you want String jsonStr = Json. serialize(c); System. debug(jsonStr); Case c2 = (Case) Json. deserialize(jsonStr , Case.


1 Answers

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 do

public void parse() {
    Map<String, Object> root = (Map<String, Object>)JSON.deserializeUntyped(getJsonToParse());
    List<Object> items = (List<Object>)root.get('items');
    for (Object item : items) {
        Map<String, Object> i = (Map<String, Object>)item;
        System.debug(i.get('id'));
    }
}

which generates this debug output:

Debug log results

like image 162
superfell Avatar answered Dec 28 '22 19:12

superfell