一、 总体说明
XML和JSON 是最为常用的数据交换格式。本例子演示如何将java对象,转成JSON输出。
二、流程
1.在上文项目中,
在“com.waylau.rest.resources.UserResource“中增加代码,代码如下:
@GET
@Path("/getUserJson")
@Produces(MediaType.APPLICATION_JSON)
public User getUserJson() {
User user = new User();
user.setAge("27");
user.setUserId("005");
user.setUserName("Fmand");
return user;
}
MediaType.APPLICATION_JSON 说明输出的是JSON格式
2,运行项目,浏览器输入http://localhost:8089/RestDemo/rest/users/getUserJson
期望获取到json的数据,此时,项目报错
org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class com.waylau.rest.bean.User, genericType=class com.waylau.rest.bean.User.
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:247)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
at org.glassfish.jersey.filter.LoggingFilter.aroundWriteTo(LoggingFilter.java:293)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
at org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:103)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:88)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1154)
at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:571)
at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:378)
at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:368)
at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:262)
此时,需要获取json转换包的支持 。
可以由多种方式实现:MOXy、JSON-P、Jackson、Jettison等,本例为Jackson。
3. jackson-all-1.9.11.jar下载地址http://wiki.fasterxml.com/JacksonDownload
4. 项目中引入jackson-all-1.9.11.jar
5.在“com.waylau.rest”目录下创建RestApplication.java
package com.waylau.rest;
import org.codehaus.jackson.jaxrs.JacksonJsonProvider;
import org.glassfish.jersey.filter.LoggingFilter;
import org.glassfish.jersey.server.ResourceConfig;
/**
* 应用
* @author waylau.com
* 2014-3-18
*/
public class RestApplication extends ResourceConfig {
public RestApplication() {
//服务类所在的包路径
packages("com.waylau.rest.resources");
//注册JSON转换器
register(JacksonJsonProvider.class);
}
}
6.修改web.xml,初始化从RestApplicaton进入应用,如下:
<servlet>
<servlet-name>Way REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.waylau.rest.RestApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Way REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
7.运行项目,再次访问
http://localhost:8089/RestDemo/rest/users/getUserJson
即可输出JSON文本
分享到:
相关推荐
Java使用Jersey框架构建 RESTful Web服务返回json数据所需的jar包。Jackson-core-asl.jar / Jackson-jaxrs.jar / Jackson-mapper-asl.jar / Jackson-xc.jar / jersey-media-json-Jackson.jar
REST演示。(REST案例大全) RESTful Web Service DemoS with Jersey,Hibernate,Mysql,Spring,JQuery,...使用Jersey构建RESTful服务3–JAVA对象转成JSON输出 4.用Jersey构建RESTful服务4–通过jersey-client
使用Java设计和构建RESTful API的实用指南这本书是关于什么的? 代表性状态转移(REST)是一种简单而强大的软件体系结构样式,用于创建轻量级和可伸缩的Web服务。 RESTful Web服务使用HTTP作为传输协议,并且可以...
Dropwizard原型玩Dropwizard框架。 一个示例应用程序演示了Dropwizard如何无缝集成和实例化-Jetty服务器,RESTful Web服务... Jersey在构建RESTful Web应用程序中非常有用。 HTTP请求映射到Java对象。 Jackson for JSON
宁静的球衣REST概述REST是在考虑SOAP痛苦的基础上构建的,基于HTTP Services的原理可以返回: XML格式JSON格式HTML 纯文本二进制/八位字节HTTP [GET]请求用@GET注释映射是通过@Path定义的URL是通过我们的上下文/ ...
如何集成Spring Boot,Jersey,Swagger来构建基于JSON的真实世界的RESTful Web服务 在开始之前 我们必须将Spring Boot Starter Web作为Swagger UI的依赖项才能正常工作。 运行Web服务 curl -X POST“ ” -H“接受:...
java相册源码Java 照片 API 服务 本示例将引导您完成代码,使用 .../Downloads/Pic-3.jpg play/album/ 第 2 步 - 使用mc policy命令将此存储桶的访问策略设置为“两者”。 可以找到有关mc policy命令的更
要求: Java 1.8 Apache tomcat 8(或您要使用的任何服务器)等级2.X Eclipse Java EE IDE Luna jersey 2.X jersey mvc angularJs 选择工具和技术的依据是适应性,期货,灵活性,最新的最佳工具,易于构建,易于...
Dropwizard是制作快速Java Web应用程序的一种偷偷摸摸的方法。 这是一些自以为是的胶水代码,将一组历史上从未使用过的库组合在一起: HTTP服务的。 REST模型的。 的JSON parsin和 ”。 验证的。 可以确定...
使用jersey-test-framework实现的集成测试,vmlens还使用并发junit处理并发请求 mvn clean test 运行应用程序 生成应用程序,然后运行 java -jar transfer-1.0-SNAPSHOT.jar API方法说明 用户数 创建用户 POST ...
基于 JAX-RS 规范使用 Jersey 构建的 Restful 服务,我在过去两年中一直在使用它。 该服务采用 JSON 格式的电子邮件消息,并从四个服务提供商中随机选择一个进行发送。 如果一个服务提供商失败,则会随机选择另一个...