salesforce - 在Salesforce Apex中解析JSON对象

标签 salesforce apex-code visualforce

如何解析Apex中给定格式的jsonObject?

我需要包含id属性的items数组中的List 。什么是合适的方法?

为了进行解析,我尝试使用代码创建一个类:

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;
    }

}

但是在该类中,它显示了诸如end,dateTime等用户的某些保留关键字,因此无法进一步采用这种方法。
{
    "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
            }
        }
    ]
}

最佳答案

您可以使用deserializeUntyped函数在普通对象/列表/ map 对象中使用JSON。您只需要记住将所有内容都强制转换为期望的类型(就像在Java中一样)。因此,要访问每个项目的ID字段,您需要

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

生成以下调试输出:

关于salesforce - 在Salesforce Apex中解析JSON对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14912599/

相关文章:

mysql - 如何为HBase创建用户登录?

email - 如何在 salesforce.com 中配置有关新案例评论的电子邮件通知?

salesforce - Salesforce.com 的 Winter '13 版本是否更改/破坏了 Set.contains() 方法?

salesforce - 文本区域上的换行符

javascript - Uncaught ReferenceError : Jquery is not defined in salesforce

ajax - 在 Visualforce 表中标记要更新的特定记录

salesforce - 如何将 Salesforce 添加为 Datagrip 中的数据源?

javascript - 使用 Postman 的 Salesforce 集成 INVALID_SESSION_ID

apex-code - 在 Force.com Apex 代码中是否有办法像 java/cpp 中那样将 "import packages/namespaces"转换为 0x104567910 ?

salesforce - 为什么由 APEX 可调度类发送的 HTML 电子邮件带有空白正文?