`

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]
3
7
分享到:
评论
1 楼 xieyijun 2013-05-22  
hi,您好,这个有源码可以发一份给我看看吗?

我的邮箱:xieyijun@live.com

相关推荐

    jackson-jaxrs-json-provider-2.7.8-API文档-中文版.zip

    赠送jar包:jackson-jaxrs-json-provider-2.7.8.jar; 赠送原API文档:jackson-jaxrs-json-provider-2.7.8-javadoc.jar; 赠送源代码:jackson-jaxrs-json-provider-2.7.8-sources.jar; 赠送Maven依赖信息文件:...

    jackson-jaxrs-json-provider-2.7.8-API文档-中英对照版.zip

    赠送jar包:jackson-jaxrs-json-provider-2.7.8.jar; 赠送原API文档:jackson-jaxrs-json-provider-2.7.8-javadoc.jar; 赠送源代码:jackson-jaxrs-json-provider-2.7.8-sources.jar; 赠送Maven依赖信息文件:...

    Jax-RS所需要的依赖jar

    7. **其他依赖**:除了上述核心组件外,"JAX-RS-Lib"可能还包括其他必要的依赖,如XML解析库(如JAXB,用于对象到XML的绑定),JSON库(如Jackson或Gson,用于处理JSON数据),以及HTTP连接管理库(如Apache ...

    JAX-WS API, JAX-RS API

    6. **提供者(Providers)**:对常见的数据格式如JSON(JSR-311中的JAXB和Jackson)、XML(JAXB)等提供内置支持,也可以自定义提供者处理特定的格式。 JAX-RS的实现有多个,如Jersey、RESTEasy、RESTlet等,它们为...

    JAX-RS入门jar包集合

    - `json-provider`:如果需要支持JSON,可能还需要JSON处理库,如Jackson或Gson。 在实际项目中,你需要根据需求选择合适的jar包,并在应用的`web.xml`或使用Java配置来注册JAX-RS的应用实例。例如,使用Jersey,你...

    jackson-jaxrs-providers:包含用于JSON,XML,YAML,Smile,CBOR格式的基于Jackson的JAX-RS提供程序的多模块项目

    地位Maven依赖要在基于Maven的项目上使用JAX-RS,请使用以下依赖项: &lt; dependency&gt; &lt; groupId&gt;com.fasterxml.jackson.jaxrs&lt;/ groupId&gt; &lt; artifactId&gt;jackson-jaxrs-json-provider&lt;/ artifactId&gt; &lt; version&gt;2.12.0...

    JAX-RS+spring

    3. **实体序列化与反序列化**: JAX-RS支持自动将Java对象转换为JSON或XML,反之亦然,这通常通过实现MessageBodyReader/Writer接口或者使用库如Jackson或Gson完成。 4. **提供者与容器**: JAX-RS不强制使用特定的...

    jackson-jaxrs-json-provider-2.2.4.zip

    标题中的"jackson-jaxrs-json-provider-2.2.4.zip"指示了这是一个与Jackson框架相关的库,特别地,它是Jackson JAX-RS JSON提供者的一个版本。Jackson是Java中广泛使用的JSON处理库,而JAX-RS是Java API for RESTful...

    jackson-jaxrs-json-provider-2.8.8.jar

    java运行依赖jar包

    JAX-RS-demo:学术项目的 JAX-RS 演示

    JAX-RS 2.0 引入了更多功能,如类型安全的 PATH 参数、异步处理、支持 JSON-P 和 XML 数据绑定等。 3. **注解驱动**:JAX-RS 使用注解(如 `@Path`、`@GET`、`@POST` 等)将接口与 HTTP 请求方法关联起来,简化了...

    Resteasy JAX-RS 3.0.6-all.zip最新官方zip包

    在压缩包中,"resteasy-jaxrs-3.0.6.Final"是核心库文件,它包含了Resteasy框架的所有必要组件,包括用于处理HTTP请求和响应的核心类、解析和序列化JSON或XML数据的提供者、以及对其他技术(如JPA、JAXB)的集成模块...

    JAX_RS1.1 Spec

    JAX-RS 支持多种消息体处理器(Message Body Workers),这些处理器可以处理不同的数据格式,如 JSON、XML 等。开发者可以通过配置不同的处理器来支持多种数据格式。 例如,为了支持 JSON 数据格式,可以使用 ...

    JavaEE examples (including JAX-RS, Wildfly Swarm,

    2. **实体类**:如果涉及数据交换,可能包含用于序列化和反序列化的Java类,这些类通常会用到JAXB或Jackson库进行JSON或XML的转换。 3. **依赖注入**:可能使用了CDI(Contexts and Dependency Injection)来管理...

    jackson-jaxrs-json-provider-2.5.4.jar

    java运行依赖jar包

    jaxrs-api.jar

    `jaxrs-api.jar` 是一个关键的 Java 库,主要用于开发 RESTful Web 服务。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于 HTTP 协议,以轻量级、简洁的接口进行数据交互。...

    jackson-jaxrs-json-provider-2.3.1.jar

    java运行依赖jar包

    jaxrs-ri-2.21

    "jaxrs-ri-2.21" 这个标题指的是 Jersey 框架的一个特定版本,即 JAX-RS 实现(Java API for RESTful Web Services Reference Implementation)的2.21版。JAX-RS 是 Java 平台上用于构建 RESTful Web 服务的一套标准...

    rescu:适用于JAX-RS的轻量级JSON Rest客户端实用程序

    ResCU主要专注于基于json的服务,并使用Jackson进行json到对象的映射。 其他几个库也可以做到这一点(例如,Jersey和RESTEasy)。 ResCU的好处是它非常轻巧,并且具有最小的依赖关系。 这对于在Android应用程序等中...

    jaxrs-ri-2.23.1.zip

    综上所述,`jaxrs-ri-2.23.1.zip`包含了Jersey 2.23.1的实现,这是一个强大的RESTful服务开发框架,提供了一系列注解和工具,使得开发人员可以更专注于业务逻辑,而无需过多关注底层实现细节。通过理解和掌握JAX-RS...

Global site tag (gtag.js) - Google Analytics