在Salesforce Apex中解析JSON对象
如何解析Apex中给定格式的jsonObject 我需要包含id属性的items数组中的列表。什么是合适的方法 为了解析它,我尝试创建一个包含以下代码的类:在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;
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'));
}
}