java - 如何将 JSON 参数映射到 Jersey 参数?

标签 java json rest jersey

我一整天都在努力,尝试将一个非常简单的 JSON 请求绑定(bind)到使用 Jersey 的方法。我似乎找不到问题所在,非常感谢任何帮助。

我的 JSON 请求就像这样简单:

{"user":"xyz","pwd":"123"}

我的 Jersey 类如下所示:

@Path("/rest")
public class JerseyService {

    @POST
    @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
    @Consumes(MediaType.APPLICATION_JSON)
    @Path("authenticate.svc")
    @Transactional(readOnly = true)
    public Response authenticate(
            String user,
            String pwd) throws IOException {

        Response.ResponseBuilder responseBuilder = Response.ok();

        responseBuilder.entity(JsonSerializer.serialize(Status.SUCCESS));

        return responseBuilder.build();
    }
}

当我按原样将 JSON 请求发送到服务时,“user”参数将整个 JSON 请求设置为字符串(user = "{\"user\":\"xyz\",\"pwd\":\"123\"}"),而 pwd 保持为空。

我尝试过使用 @QueryParam、@FormParam 以及其他带有“user”和“pwd”的注释,但我找不到 Jersey 将 JSON 值绑定(bind)到 Java 参数的方法。

对我做错了什么有什么想法吗?

谢谢!

最佳答案

您可以使用低级 JSONObject 或创建自己的类来接受 json 参数。 以下是 JSONObject 的示例。

```

@Path("/rest")
public class JerseyService {

    @POST
    @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
    @Consumes(MediaType.APPLICATION_JSON)
    @Path("authenticate.svc")
    @Transactional(readOnly = true)
    public Response authenticate(final JSONObject login) throws IOException {
        System.out.println(login.getString("user"));
        System.out.println(login.getString("pwd"));
        //^^^^^^^^^^^^^^^^^
        Response.ResponseBuilder responseBuilder = Response.ok();

        responseBuilder.entity(JsonSerializer.serialize(Status.SUCCESS));

        return responseBuilder.build();
    }
}

```

关于java - 如何将 JSON 参数映射到 Jersey 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21762888/

相关文章:

javascript - 处理API调用中丢失的数据

oracle - 如何从 REST API 获取数据到 Oracle DB

java - Gradle、Tika - 排除一些使 "fat jar"太胖的依赖包

java - kafka 引发流式 java api 问题

java - 如何在java中设置JButton一次播放一个声音?

Python 请求仅返回 1 个元素

java - 从 Intent.createChooser 获取选择的应用程序

java - 用Java解析JSON数组

javascript - 从 JSON 创建对象数组

java - 使用 RestTemplate 进行基本身份验证 - 编译错误 - 构造函数 HttpClient() 不可见