我希望得到键和值到每个JSON格式的呼叫,并把它们作为Java对象,如字符串或整数,在其余客户会输入{“名称”:“HelloWorld”的}
我会回来的HelloWorld的映射,其重点到目前为止香港专业教育学院看到的例子,但只是很难找到什么每个标签不和如何解析身体,得到上述结果IM
@POST
@Path("/SetFeeds")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@JsonCreator
public String setFeed(String jsonBody,@Context UriInfo uriInfo){
...Code to manipulate the body of the request
return response;
}
你需要了解的第一件事是请求主体的解析是怎么做的。 在JAX-RS解析(或数据编/反序列化/无论)与做MessageBodyReader
秒。 有迹象表明,可以处理不同的内容类型不同的读者。 例如,如果你有内容类型application/octet-stream
,有一个读者,将散集到byte[]
或File
或InputStream
。 所以下面将工作开箱
@Consumes("application/octet-stream")
public Response post(File file) {} // or `byte[]` or `InputStream`
话虽这么说,JAX-RS的实现都使用了“易于转换”的格式非常基本的读者。 例如,大多数的请求可以被转换为String
,所以你得到的是免费的大部分内容类型,您与您当前的代码。
如果我们想要一些更复杂的数据类型,如您HelloWorld
的内容类型application/json
,对于这个没有标准的读卡器。 对于这项工作,我们要么需要创建自己的阅读器,或者使用带有一个读者的图书馆。 幸运的是,在Java中,最流行的JSON框架杰克逊 ,已经实施了具有读取和写入(序列化)一个JAX-RS提供者。
现在,这取决于服务器/ JAX-RS实现您正在使用不同的实现创建围绕核心杰克逊JAX-RS模块,光包装。 如果我知道你正在使用的JAX-RS实现,我会推荐使用的包装,或者你可以忘记的包装和公正的基本杰克逊模块,这是去
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.2.3</version>
</dependency>
上面是一个Maven依赖性。 如果你不使用Maven,那么基本上你需要下载所有这些罐子。
你可以找到所有的人都在这里 。 只要搜索他们的个人。
然后,你需要注册的供应商。 同样它取决于你的JAX-RS实现和你如何处理你的资源类的配置。 我需要看到你的应用程序的配置(在web.xml或Java代码),也许你正在使用的服务器来提供帮助的。 对于大部分的JacksonJsonProvider
(这是读写器)需要被注册。
一旦你拥有了它,然后注册您需要了解的杰克逊如何处理serializaion的基础知识。 在最基本的层面上,杰克逊查找JavaBean的属性 (基本的getter / setter),以配合JSON属性。 例如,如果你有这个bean属性
public class HelloWorld {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
该JSON应该像{"name": "whatever"}
在"name"
键是一样的bean属性。 在Bean属性而言,属性的名称是毕竟字母get/set
与小写的第一个字母。
这几乎是所有有给它。 现在你可以做
@Consumes("application/json")
public Response post(HelloWorld helloWorld) {
String name = helloWorld.getName(); // should == "whatever"
return Response.ok(helloWorld).build(); // we can also return objects
}
对于更复杂的JSON格式,您应该指的是杰克逊的文档或在这里问一个问题,关于左右。
至于的登记JacksonJsonProvider
,如果您有问题,请提供我所要求的信息,即应用程序的配置文件(web.xml或Java配置)和正在使用的服务器。
也可以看看: