1

I keep getting Malformed JSON: Expected '[' at the beginning of List/Set error.

Can someone please fix my wrapper class and controller for this JSON response to deserialize it?

JSON:

{
    "DataID": "523836000002",
    "DisplayName": "Joe Buddy Guy (W380)",
    "AnotherId": "00010567463",
    "Restrictions": [{
        "Id": 130,
        "From": "2015-07-01T00:00:00",
        "To": "2016-12-31T00:00:00",
        "Reason": "Owner Use"
    }],
    "Allocations": [{
        "Year": 2015,
        "Points": 500000
    },
    {
        "Year": 2016,
        "Points": 500000
    }]
}

Here is my current wrapper:

    public class wrapper {

    public class responseResource {

        public String DataID{get; set;}
        public String DisplayName {get; set;}
        public String AnotherId{get; set;}
        public List<aItems> Allocations {get;set;}
        public List<rItems> Restrictions {get;set;}

    }

    public class aItems {

        public Integer Year {get; set;}
        public Integer Points {get; set;}

    }

    public class rItems {

        public Integer Id {get; set;}
        public String From {get; set;}
        public String To {get; set;}
        public String Reason {get; set;}

    }

}

Here is my current Controller:

public class wrapper_Controller {

public List<wrapper>ConsoleWrapperList{get; set;}
public List<wrapper>getperformCallout(){

ConsoleWrapperList = new List<wrapper>();

HttpRequest req = new HttpRequest();
HttpResponse res = new HttpResponse();

Http http = new Http();
//req.setEndpoint('https://superawesomeendpoint');


req.setMethod('GET');
req.setHeader('Authorization','token');
res = http.send(req);

if(res.getStatusCode() == 200 && res.getBody() != null){

ConsoleWrapperList = (List<wrapper>)json.deserialize(res.getBody(),List<wrapper>.class); 

}


return ConsoleWrapperList;

}

}

1 Answer 1

3

The root element of the JSON is an object not an array/list so the JSON code should be:

public wrapper.responseResource data {get; set;}

...

data = (wrapper.responseResource) JSON.deserialize(
        res.getBody(),
        wrapper.responseResource.class
        );

with the JSON.deserialize in a method.

0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .