首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JAX-RS之jackson去处置json

2012-10-25 
JAX-RS之jackson去处理json在JAX-RS中使用jackson去处理json,例子如下。下文讲解了,如何将一个对象转变为JS

JAX-RS之jackson去处理json
  在JAX-RS中使用jackson去处理json,例子如下。下文讲解了,如何将一个对象转变为JSON对象,使用的是jackson。

1 放置resteasy-jackson-provider.jar

2
一个简单对象

public class Product { String name;int qty; public String getName() {return name;} public void setName(String name) {this.name = name;} public int getQty() {return qty;} public void setQty(int qty) {this.qty = qty;} }


3 使用注解@Produces("application/json").就可以转换JSON了
import javax.ws.rs.Consumes;import javax.ws.rs.GET;import javax.ws.rs.POST;import javax.ws.rs.Path;import javax.ws.rs.Produces;import javax.ws.rs.core.Response; @Path("/json/product")public class JSONService { @GET@Path("/get")@Produces("application/json")public Product getProductInJSON() { Product product = new Product();product.setName("iPad 3");product.setQty(999); return product;  } @POST@Path("/post")@Consumes("application/json")public Response createProductInJSON(Product product) { String result = "Product created : " + product;return Response.status(201).entity(result).build(); } }

  注意,要把web.xml中的自动扫描注释掉,否则会出错:
<!-- disabled auto scan
        <context-param>
             <param-name>resteasy.scan</param-name>
             <param-value>true</param-value>
</context-param> -->

<context-param>
<param-name>resteasy.resources</param-name>
<param-value>com.mkyong.rest.JSONService</param-value>
</context-param>

4 客户端调用服务端的GET,用于将服务端的对象转为JSON,如下:
 
try {URL url = new URL("http://localhost:8085/Resetjason/json/product/get");HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("GET");conn.setRequestProperty("Accept", "application/json");if (conn.getResponseCode() != 200) {throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());}BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));String output;System.out.println("Output from Server .... \n");while ((output = br.readLine()) != null) {System.out.println(output);}conn.disconnect();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}


运行后,输出:
Output from Server ....

{"qty":999,"name":"iPad 3"}

5 调用服务端的POST,将JSON传入,看其如何转化位product
 
try {URL url = new URL("http://localhost:8085/Resetjason/json/product/post");HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setDoOutput(true);conn.setRequestMethod("POST");conn.setRequestProperty("Content-Type", "application/json");String input = "{"qty":100,"name":"iPad 4"}";OutputStream os = conn.getOutputStream();os.write(input.getBytes());os.flush();if (conn.getResponseCode() != HttpURLConnection.HTTP_CREATED) {throw new RuntimeException("Failed : HTTP error code : "+ conn.getResponseCode());}BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));String output;System.out.println("Output from Server .... \n");while ((output = br.readLine()) != null) {System.out.println(output);}conn.disconnect();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}


输出为:
  Output from Server ....

Product created : Product [name=iPad 4, qty=100]

热点排行
Bad Request.