 <p>Jersey makes the process very easy, my service class worked well with JSON, all I had to do is to add the dependencies in the pom.xml</p> <pre><code>@Path("/customer") public class CustomerService { private static Map&lt;Integer, Customer&gt; customers = new HashMap&lt;Integer, Customer&gt;(); @POST @Path("save") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public SaveResult save(Customer c) { customers.put(c.getId(), c); SaveResult sr = new SaveResult(); sr.sucess = true; return sr; } @GET @Produces(MediaType.APPLICATION_JSON) @Path("{id}") public Customer getCustomer(@PathParam("id") int id) { Customer c = customers.get(id); if (c == null) { c = new Customer(); c.setId(id * 3); c.setName("unknow " + id); } return c; } } </code></pre> <p>And in the pom.xml</p> <pre class="lang-xml prettyprint-override"><code>&lt;dependency&gt; &lt;groupId&gt;org.glassfish.jersey.containers&lt;/groupId&gt; &lt;artifactId&gt;jersey-container-servlet&lt;/artifactId&gt; &lt;version&gt;2.7&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.glassfish.jersey.media&lt;/groupId&gt; &lt;artifactId&gt;jersey-media-json-jackson&lt;/artifactId&gt; &lt;version&gt;2.7&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.glassfish.jersey.media&lt;/groupId&gt; &lt;artifactId&gt;jersey-media-moxy&lt;/artifactId&gt; &lt;version&gt;2.7&lt;/version&gt; &lt;/dependency&gt; </code></pre>