在Salesforce Apex中解析JSON对象

在Salesforce Apex中解析JSON对象,salesforce,apex-code,visualforce,Salesforce,Apex Code,Visualforce,如何解析Apex中给定格式的jsonObject 我需要包含id属性的items数组中的列表。什么是合适的方法 为了解析它,我尝试创建一个包含以下代码的类: public class JSON2Apex { public class Items { public String kind; public String etag; public String id; public String status;

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

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

为了解析它,我尝试创建一个包含以下代码的类:

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

}

您可以使用
反序列化非类型化
函数处理普通对象/列表/映射对象中的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'));
    }
}
public void parse(){
Map root=(Map)JSON.deserializeUntyped(getJsonToParse());
List items=(List)root.get('items');
用于(对象项:项){
MAPI=(Map)项目;
System.debug(i.get('id'));
}
}
将生成此调试输出:


嘿,请回复这个问题@superfell-你太棒了!你的回答使我摆脱了困境!非常感谢。对我来说,使用非类型化可以更容易地获取嵌套值,因为我可以使用.get而不必迭代它。也许有其他选择,但我找不到。。。
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'));
    }
}