R.Walid
R.Walid

Reputation: 47

return json array from spring controller

I want to return with my controller spring a JSONARRAY, but when running I receive this error:

java.lang.IllegalArgumentException: No converter found for return value of type: class org.codehaus.jettison.json.JSONArray

this is my code :

@RequestMapping(value = "/generate", method = RequestMethod.GET)
@ResponseBody
public JSONArray generate() throws NoSuchFieldException, CloneNotSupportedException{

        return facturationSvc.facturer();
}

NB:The method "facturer()" of the service "facturationSvc" , returns a JSON ARRAY

Upvotes: 2

Views: 13991

Answers (2)

pdem
pdem

Reputation: 4067

You should return a java List, not a JSONArray. Spring uses Jackson, and the purpose of jackson is to convert java object to/from base elements like JsonArray, and then to a Json String

You don't need to directly manage json, Spring does it all for you, so the solution here is to change your return types (of the controller and the service) and manage only java Objects

@RequestMapping(value = "/generate", method = RequestMethod.GET) 
@ResponseBody public List<YourFacturerClass> generate() {

    return facturationSvc.facturer();

}

Upvotes: 4

Amer Qarabsa
Amer Qarabsa

Reputation: 6574

you should be returning string not JSONArray,

String generate() throws NoSuchFieldException, CloneNotSupportedException{

      return facturationSvc.facturer().toString();
}

Upvotes: 2

Related Questions