Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JSON请求并生成不同的输出_Java_Json_Rest_Restful Url - Fatal编程技术网

Java 使用JSON请求并生成不同的输出

Java 使用JSON请求并生成不同的输出,java,json,rest,restful-url,Java,Json,Rest,Restful Url,您能给我指出这篇文章或向我解释如何声明RESTfulWeb服务,该服务使用JSON请求并基于JSON中的参数生成不同格式的输出,这意味着客户可以获得JSON格式的输出,但也可以获得pdf格式的输出。我在JBoss5.1上使用Java和RestEasy。您可以这样使用 @Path("/") public class Test { @Path("/test") @POST @Consumes("application/json") @Produces("text/plain") public R

您能给我指出这篇文章或向我解释如何声明RESTfulWeb服务,该服务使用JSON请求并基于JSON中的参数生成不同格式的输出,这意味着客户可以获得JSON格式的输出,但也可以获得pdf格式的输出。我在JBoss5.1上使用Java和RestEasy。

您可以这样使用

@Path("/")
public class Test {

@Path("/test")
@POST 
@Consumes("application/json")
@Produces("text/plain")
public Response addOrderJSON(OrderDetails details) {...}


}

您可以将请求映射到返回RestEasy
Response
对象的方法上,使用
ResponseBuilder
构建响应,根据JSON中的参数动态设置响应的mime类型

@POST
@Path("/foo")
@Consumes("application/json")
public Response fooService(MyObject obj) {
   MyResponseEntity entity = MyObjectService.retrieveSomethingFrom(obj);
   return Response.status(200).entity(entity).type(obj.isXml() ? "text/xml" : "application/json").build();
}

这样,如果表示传入JSON的
MyObject
域对象的
xml
参数设置为true,则
Response
对象将参数化以生成
text/xml
,否则它将生成
application/JSON
。RestEasy应该完成其余工作。

服务在外部调用,客户端没有对“MyObject”的引用。那会是个问题吗?他会如何称呼这个服务?您的服务如何将JSON解析为域对象?您说过在提供给服务的JSON中有一个参数。如果是这样,当JSON被转换成Java对象时,这个属性上有一个getter,这样您就可以决定应该生成什么类型的数据(JSON、xml等等)。您的客户端正在发送JSON,所以这不是什么大问题。我知道了,我正在使用Jackson作为提供者将请求(反)序列化到域对象中。。