0 votes
1 view
in Salesforce by (11.9k points)

How do I parse a JSON object 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 used as the 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

            }

        }

    ]

}

1 Answer

0 votes
by (31.8k points)

You can parse jsonObject using the deserializeUntyped function. It will work with the JSON in plain object/list/map objects. You just need to learn how to cast everything to the expected type (exactly as you would in Java). So to access the ID field of each item, you can use the following code:

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'));

    }

}

Welcome to Intellipaat Community. Get your technical queries answered by top developers !


Categories

...