Java:在Restful Service中创建包含多个值的JSON响应

时间:2016-02-18 15:16:26

标签: java json eclipse rest google-app-engine

我在Eclipse Java项目的Restful Web服务中实现了以下方法,它只返回一个值,并作为json响应呈现给访问它的客户端。它运作正常。

@GET
@Produces({"application/xml", "application/json"})
@Path("/getname/{userid}/")
public String GetName(@PathParam("userid") String userid) { 
    String name = "Earthling";
    return name ;
}

现在让我们看看多个值。我需要在相同的响应中单独返回3个值,而不为其创建自定义对象

举个例子,我在我的C#项目中编写了这个场景:

[HttpGet]
[Route("api/getname")]
public IHttpActionResult GetName(string userid) {
    String name = "Earthling";
    String extraValue = "1";
    Boolean anotherValue = false;
    return Ok(new {name , extraValue, anotherValue });
}

如何在Java中编写上述C#示例并允许该方法在Restful Web Service中返回3个(不同类型的)对象作为响应?就像我说的,我不想创建一个单独的对象来封装它们。

田田!提问时间:

1)如何在Java中将多个值(String,Boolean等)作为JSON响应返回?

2)我编写的Java方法返回一个String值(第一个例子)。如果我返回3个值,我该如何定义方法?在C#中,我可以简单地使用IHttpActionResult,而不必显式指定对象类型

谢谢

1 个答案:

答案 0 :(得分:0)

如果您想在Java中执行此操作,则可以使用javax.ws.rs.core.Response类。

只需将您想要在响应中返回的所有值包装在单个类中(例如,我将该类命名为“SampleResponse”)

public class SampleResponse {
 String name = "Earthling";
 String extraValue = "1";
 Boolean anotherValue = false;
 // getter setter

}

你的方法定义应该是

public Response GetName(@PathParam("userid") String userid) {
   return Response.ResponseBuilder.ok(new SampleResponse());}

那应该为你做好工作。