Reputation: 9400
I just tried adding this to my sample controller:
@RequestMapping(value="/jsontest", method=RequestMethod.GET)
public @ResponseBody User getUserAsJson() {
User jsonUser = new User();
jsonUser.setFirstName("Mickey");
jsonUser.setLastName("Mouse");
jsonUser.setUsername("mmous");
return jsonUser;
}
However, visiting the /jsontest url ends on a 406 http error => not acceptable.
So... what's the currently working method for producing "application/json" responses, instead of returning jsp/html views?
I'm using Spring Framework 3.0.6 RELEASE.
Upvotes: 1
Views: 1721
Reputation: 38
@RequestMapping(value="/jsontest", method=RequestMethod.GET,produces="application/json")
public @ResponseBody User getUserAsJson() {
User jsonUser = new User();
jsonUser.setFirstName("Mickey");
jsonUser.setLastName("Mouse");
jsonUser.setUsername("mmous");
return jsonUser;
}
This should work add produces attribute..
Upvotes: 0
Reputation: 340733
Add Jackson mapper to your CLASSPATH:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.2</version>
</dependency>
And call your web service with correct accept header, e.g.:
$ curl -H "Accept: application/json" localhost:8080/app/jsontest
Or using $.getJSON()
from browser.
Upvotes: 2