WAS v8.5 > End-to-end paths > Web services - RESTful services > Use JSON content in JAX-RS application requests and responses > Step 4. Implement a resource method using JSON content for a request and response entity.Use Jackson with plain old Java objects (POJOs)
RESTful services can unmarshal and marshal JSON data to and from POJOs using Jackson libraries.
POJO types (including array types and java.util.Collection types) are Jackson-supported entity types. The Jackson library is included in the runtime environment of WAS v8.5. We do not need to bundle any additional libraries.
The following Jackson annotations are supported and can be used to annotation POJOs:
org.codehaus.jackson.annotate.JsonAnySetter org.codehaus.jackson.annotate.JsonAutoDetect org.codehaus.jackson.annotate.JsonClass org.codehaus.jackson.annotate.JsonContentClass org.codehaus.jackson.annotate.JsonCreator org.codehaus.jackson.annotate.JsonGetter org.codehaus.jackson.annotate.JsonIgnore org.codehaus.jackson.annotate.JsonIgnoreProperties org.codehaus.jackson.annotate.JsonKeyClass org.codehaus.jackson.annotate.JsonProperty org.codehaus.jackson.annotate.JsonPropertyOrder org.codehaus.jackson.annotate.JsonSetter org.codehaus.jackson.annotate.JsonSubTypes org.codehaus.jackson.annotate.JsonSubTypes.Type org.codehaus.jackson.annotate.JsonTypeInfo org.codehaus.jackson.annotate.JsonTypeName org.codehaus.jackson.annotate.JsonValue org.codehaus.jackson.annotate.JsonWriteNullProperties org.codehaus.jackson.map.annotate.JsonCachable org.codehaus.jackson.map.annotate.JsonDeserialize org.codehaus.jackson.map.annotate.JsonSerialize org.codehaus.jackson.map.annotate.JsonTypeIdResolver org.codehaus.jackson.map.annotate.JsonTypeResolver org.codehaus.jackson.map.annotate.JsonViewThese annotations can be used for more fine grained control over how POJOs are converted to and from JSON.
- Use a POJO as a parameter or return type for the resource method.
- Add either of the following annotations with the application or JSON media type to your resource method.
- javax.ws.rs.core.Produces
- javax.ws.rs.core.Consumes
Example
The following example illustrates a resource used to return a collection of people and to process a greeting for a person.
public class Person { private String firstName; private String lastName; public String getFirstName() { return this.firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return this.lastName; } public void setLastName(String lastName) { this.lastName = lastName; } }public class Greeting { private String greeting; public String getGreeting() { return this.greeting; } public void setGreeting(String greeting) { this.greeting = greeting; } }import java.util.List; import java.util.ArrayList; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Consumes; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("/people") public class JacksonResource { @GET @Produces(MediaType.APPLICATION_JSON) public List<Person> getPersonList() { List<Person> personArray = new ArrayList<Person>(); Person firstPerson = new Person(); firstPerson.setFirstName("John"); firstPerson.setLastName(“Doe”); personArray.add(firstPerson); Person secondPerson = new Person(); secondPerson.setFirstName(“Fred”); secondPerson.setLastName("Thompson"); personArray.add(secondPerson); return personArray; } @Path("/greet") @POST @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Greeting createGreetingForPerson(Person person) { String name = person.getFirstName() + “ “ + person.getLastName(); Greeting greeting = new Greeting(); greeting.setGreeting(“Hello “ + name); return greeting; } }When issuing a GET request to the JacksonResource resource, JSON content, like the following code snippet, is returned in the response.
[{"firstName":"John","lastName":"Doe"},{"firstName":"Fred","lastName":"Thompson"}]
When issuing a POST request to the JacksonResource, JSON content, like the following code snippet, is sent in the request and is stored in the Person object.
{"firstName":"John","lastName":"Doe"} JSON content, like the following code snippet, is returned in the response. {"greeting":"Hello John Doe"}
Related
Use JSON content in JAX-RS application requests and responses
Reference:
http://jackson.codehaus.org/