【问题标题】:Java: Creating a JSON response containing multiple values in a Restful ServiceJava:在 Restful 服务中创建包含多个值的 JSON 响应
【发布时间】:2016-02-18 15:16:25
【问题描述】:

我在一个 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 服务中返回 3 个(不同类型的)对象作为响应?就像我说的,我不想创建一个单独的对象来封装它们。

多田!提问时间:

1) 如何在 Java 中将多个值(字符串、布尔值等)作为 JSON 响应返回?

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

谢谢

【问题讨论】:

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


    【解决方案1】:

    如果您想在 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());}
    

    这应该可以为您完成这项工作。

    【讨论】:

    • 它给了我一个错误说'类型响应不是通用的;它不能用参数 ' 参数化
    • 我也用过 javax.ws.rs.core
    • 你可以在这里发布堆栈跟踪吗?
    • 我的错,使用不带类型参数的响应并在响应中设置对象使用 Response.ResponseBuilder.ok(object); (这是为了成功响应)。我正在编辑我的答案以反映正确的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 2022-01-18
    相关资源
    最近更新 更多