You need to sign in to do that
Don't have an account?
Deserialization of JSON
Gurus,
I am having issues trying to parse JSON returned from the HTTP response.
Below is my APEX code:
HTTP response:
I converted Json to Apex and following classes were generated:
I am not sure what I am doing wrong, in the parsing and deserialization.
Regards,
Gaurav
I am having issues trying to parse JSON returned from the HTTP response.
Below is my APEX code:
public class JiraGetIssue { public String baseUrl = 'https://beta.pelco.com:8443/tasks/rest/api/latest/issue/SUSTAIN-4050'; // Base URL of your JIRA instance //public String baseUrl = 'https://beta.pelco.com:8443/tasks/rest/api/latest/issue/'; public String username = 'salesforce.connector'; // JIRA username public String password = 'password'; // JIRA password // Constructs Basic Http Authentication header from provided credentials public String authHeader() { Blob headerValue = Blob.valueOf(username+':'+password); return 'Basic ' + EncodingUtil.base64Encode(headerValue); } public void Execute() { Http http = new Http(); HttpRequest request = new HttpRequest(); string fields = 'key,'+ 'assignee,'+ 'project,'+ 'summary,'+ 'created,'+ 'updated,'+ 'priority,'+ 'status'; system.debug(fields); integer startAt = 0; integer maxResults= 10; string searchString='SUSTAIN'; //String CreateIssueJsonJIra= '{"fields": {"summary":"test create jira1","description":"test create jira1" ,"issuetype":{"name": "Bug"}}} '; //String CreateIssueJsonJIra= '{"fields": { "project":{ "key": "SUSTAIN"},"summary": "REST ye merry gentlemen2","description": "Creating of an issue using project keys and issue type names using the REST API2","issuetype": {"name": "Bug"}}}'; request.setMethod('GET'); //Set HTTPRequest header properties request.setHeader('Accept', 'application/json'); request.setHeader('Content-Type','application/json'); Blob headerValue = Blob.valueOf(username+':'+password); request.setHeader('Authorization','Basic '+ EncodingUtil.base64Encode(headerValue)); baseUrl='https://beta.pelco.com:8443/tasks/rest/api/latest/search?jql=summary~"gentlemen*"&project=SUSTAIN&fields=key,summary,status,priority,status,created,updated,assignee'; //baseUrl=baseUrl+searchString+'"'; //baseUrl=baseUrl+ '&fields=' + fields + '&startAt='+ startAt +'&maxResults='+maxResults; system.debug(baseUrl); request.setEndpoint(baseUrl); HttpResponse response = http.send(request); // Log the JSON content System.debug('JSON Response: ' + response.getBody()); string JSONContent = response.getBody(); system.debug(jiraGetIssueResponse.parse(JSONContent)); JSONParser parserJira = JSON.createParser(JSONContent); //system.debug('parserJira ='+parserJira); while (parserJira.nextToken() != null) { // Start at the array of issues. if(parserJira.getCurrentToken() == JSONToken.START_ARRAY) { while (parserJira.nextToken() != null) { if ((parserJira.getCurrentToken() == JSONToken.START_OBJECT)) { //JiraGetIssueResponse jiraIssue = (JiraGetIssueResponse)parserJira.readValueAs(JiraGetIssueResponse.class); //system.debug(jiraIssue); system.debug('Current TOKEN:'+parserJira.getCurrentToken()); system.debug('Current TEXT:'+parserJira.getText()); //parserJira.nextToken(); //system.debug('**************'); } } system.debug('**************'); //system.debug('Current TOKEN:'+parserJira.getCurrentToken()); //system.debug('Current TEXT:'+parserJira.getText()); } } //system.debug('JiraId='+jiraId+' JiraKey='+jirakey); } }
HTTP response:
09:24:00:084 USER_DEBUG [43]|DEBUG|JSON Response: {"expand":"schema,names","startAt":0,"maxResults":50,"total":4,"issues":[{"expand":"operations,editmeta,changelog,transitions,renderedFields","id":"176072","self":"https://beta.pelco.com:8443/tasks/rest/api/latest/issue/176072","key":"TEST-3","fields":{"summary":"REST ye merry gentlemen2","created":"2016-03-03T11:38:40.000-0800","assignee":null,"priority":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/priority/6","iconUrl":"https://beta.pelco.com:8443/tasks/images/icons/help_16.gif","name":"None","id":"6"},"updated":"2016-03-03T11:38:40.000-0800","status":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"https://beta.pelco.com:8443/tasks/images/icons/statuses/open.png","name":"Open","id":"1","statusCategory":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"New"}}}},{"expand":"operations,editmeta,changelog,transitions,renderedFields","id":"176071","self":"https://beta.pelco.com:8443/tasks/rest/api/latest/issue/176071","key":"TEST-2","fields":{"summary":"REST ye merry gentlemen.","created":"2016-03-02T16:15:49.000-0800","assignee":null,"priority":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/priority/6","iconUrl":"https://beta.pelco.com:8443/tasks/images/icons/help_16.gif","name":"None","id":"6"},"updated":"2016-03-02T16:15:49.000-0800","status":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"https://beta.pelco.com:8443/tasks/images/icons/statuses/open.png","name":"Open","id":"1","statusCategory":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"New"}}}},{"expand":"operations,editmeta,changelog,transitions,renderedFields","id":"176073","self":"https://beta.pelco.com:8443/tasks/rest/api/latest/issue/176073","key":"SUSTAIN-4052","fields":{"summary":"REST ye merry gentlemen2","created":"2016-03-03T13:01:31.000-0800","assignee":null,"priority":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/priority/6","iconUrl":"https://beta.pelco.com:8443/tasks/images/icons/help_16.gif","name":"None","id":"6"},"updated":"2016-03-03T13:01:31.000-0800","status":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"https://beta.pelco.com:8443/tasks/images/icons/statuses/open.png","name":"Open","id":"1","statusCategory":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"New"}}}},{"expand":"operations,editmeta,changelog,transitions,renderedFields","id":"176074","self":"https://beta.pelco.com:8443/tasks/rest/api/latest/issue/176074","key":"SUSTAIN-4053","fields":{"summary":"REST ye merry gentlemen3","created":"2016-03-04T09:52:23.000-0800","assignee":null,"priority":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/priority/6","iconUrl":"https://beta.pelco.com:8443/tasks/images/icons/help_16.gif","name":"None","id":"6"},"updated":"2016-03-04T09:52:23.000-0800","status":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"https://beta.pelco.com:8443/tasks/images/icons/statuses/open.png","name":"Open","id":"1","statusCategory":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"New"}}}}]}
I converted Json to Apex and following classes were generated:
// //Generated by AdminBooster // public class JiraGetIssueResponse { public String expand; //schema,names public Integer startAt; //0 public Integer maxResults; //50 public Integer total; //4 public cls_issues[] issues; public class cls_issues { public String expand; //operations,editmeta,changelog,transitions,renderedFields public String id; //176072 public String self; //https://beta.pelco.com:8443/tasks/rest/api/latest/issue/176072 public String key; //TEST-3 public cls_fields fields; } public class cls_fields { public String summary; //REST ye merry gentlemen2 public String created; //2016-03-03T11:38:40.000-0800 public cls_assignee assignee; public cls_priority priority; public String updated; //2016-03-03T11:38:40.000-0800 public cls_status status; } public class cls_assignee { } Public class cls_priority { public String self; //https://beta.pelco.com:8443/tasks/rest/api/2/priority/6 public String iconUrl; //https://beta.pelco.com:8443/tasks/images/icons/help_16.gif public String name; //None public String id; //6 } public class cls_status { public String self; //https://beta.pelco.com:8443/tasks/rest/api/2/status/1 public String description; //The issue is open and ready for the assignee to start work on it. public String iconUrl; //https://beta.pelco.com:8443/tasks/images/icons/statuses/open.png public String name; //Open public String id; //1 public cls_statusCategory statusCategory; } Public class cls_statusCategory { public String self; //https://beta.pelco.com:8443/tasks/rest/api/2/statuscategory/2 public Integer id; //2 public String key; //new public String colorName; //blue-gray public String name; //New } public static JiraGetIssueResponse parse(String json) { return (JiraGetIssueResponse) System.JSON.deserialize(json, JiraGetIssueResponse.class); } /* static testMethod void testParse() { String json= '{"expand":"schema,names","startAt":0,"maxResults":50,"total":4,"issues":[{"expand":"operations,editmeta,changelog,transitions,renderedFields","id":"176072","self":"https://beta.pelco.com:8443/tasks/rest/api/latest/issue/176072","key":"TEST-3","fields":{"summary":"REST ye merry gentlemen2","created":"2016-03-03T11:38:40.000-0800","assignee":null,"priority":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/priority/6","iconUrl":"https://beta.pelco.com:8443/tasks/images/icons/help_16.gif","name":"None","id":"6"},"updated":"2016-03-03T11:38:40.000-0800","status":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"https://beta.pelco.com:8443/tasks/images/icons/statuses/open.png","name":"Open","id":"1","statusCategory":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"New"}}}},{"expand":"operations,editmeta,changelog,transitions,renderedFields","id":"176071","self":"https://beta.pelco.com:8443/tasks/rest/api/latest/issue/176071","key":"TEST-2","fields":{"summary":"REST ye merry gentlemen.","created":"2016-03-02T16:15:49.000-0800","assignee":null,"priority":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/priority/6","iconUrl":"https://beta.pelco.com:8443/tasks/images/icons/help_16.gif","name":"None","id":"6"},"updated":"2016-03-02T16:15:49.000-0800","status":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"https://beta.pelco.com:8443/tasks/images/icons/statuses/open.png","name":"Open","id":"1","statusCategory":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"New"}}}},{"expand":"operations,editmeta,changelog,transitions,renderedFields","id":"176073","self":"https://beta.pelco.com:8443/tasks/rest/api/latest/issue/176073","key":"SUSTAIN-4052","fields":{"summary":"REST ye merry gentlemen2","created":"2016-03-03T13:01:31.000-0800","assignee":null,"priority":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/priority/6","iconUrl":"https://beta.pelco.com:8443/tasks/images/icons/help_16.gif","name":"None","id":"6"},"updated":"2016-03-03T13:01:31.000-0800","status":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"https://beta.pelco.com:8443/tasks/images/icons/statuses/open.png","name":"Open","id":"1","statusCategory":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"New"}}}},{"expand":"operations,editmeta,changelog,transitions,renderedFields","id":"176074","self":"https://beta.pelco.com:8443/tasks/rest/api/latest/issue/176074","key":"SUSTAIN-4053","fields":{"summary":"REST ye merry gentlemen3","created":"2016-03-04T09:52:23.000-0800","assignee":null,"priority":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/priority/6","iconUrl":"https://beta.pelco.com:8443/tasks/images/icons/help_16.gif","name":"None","id":"6"},"updated":"2016-03-04T09:52:23.000-0800","status":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"https://beta.pelco.com:8443/tasks/images/icons/statuses/open.png","name":"Open","id":"1","statusCategory":{"self":"https://beta.pelco.com:8443/tasks/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"New"}}}}]}'; JiraGetIssueResponse obj = parse(json); System.assert(obj != null); } */ }
I am not sure what I am doing wrong, in the parsing and deserialization.
Regards,
Gaurav
Can you post any specific issues you got? When I executed above code in my Org, it worked just fine!