2013-02-16 36 views
8

Làm cách nào để phân tích cú pháp một jsonObject có định dạng đã cho trong Apex?Phân tích đối tượng JSON trong Salesforce Apex

Tôi cần Danh sách < Chuỗi> từ mảng mục chứa thuộc tính id. Một số phương pháp thích hợp là gì?

Đối với phân tích nó, tôi cố gắng tạo ra một lớp với mã:

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

} 

Nhưng trong lớp này nó được hiển thị một số từ khóa dành riêng là sử dụng như kết thúc, dateTime vv như vậy có thể không tiến hành thêm với cách tiếp cận này .

{ 
    "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 
      } 
     } 
    ] 
} 

Trả lời

19

Bạn có thể sử dụng hàm deserializeUntyped để làm việc với JSON trong đối tượng đơn giản/danh sách/đối tượng bản đồ. Bạn chỉ cần nhớ để đúc tất cả mọi thứ để loại dự kiến ​​(chính xác như bạn làm trong Java). Vì vậy, để truy cập vào các lĩnh vực id của từng hạng mục, bạn muốn làm

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

mà tạo ra debug đầu ra này:

Debug log results

+0

thanks a lot bạn đã trả lời –

+0

hey vui lòng trả lời truy vấn http: //stackoverflow.com/questions/14921235/debugging-schedulable-job-in-apex-salesforce –

+0

@superfell - Bạn thật tuyệt vời! Câu trả lời của bạn đưa tôi ra khỏi dưa chua! Cảm ơn bạn! –

Các vấn đề liên quan