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.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.