如何解析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/