java - java restful服务中如何消费json参数

标签 java json web-services

我如何在我的 web 服务中使用 json 参数,我可以使用 @PathParam 获取参数但是要获取 json 数据作为参数却不知道该怎么做。

@GET
@Path("/GetHrMsg/json_data")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces(MediaType.APPLICATION_JSON)
public String gethrmessage(@PathParam("emp_id") String empid) {

用什么代替@PathParam 以及以后如何解析它。

最佳答案

我假设您正在谈论使用随请求发送的 JSON 消息正文。

如果是这样,请注意虽然没有完全禁止,但普遍认为 GET 请求不应有请求体。请参阅“HTTP GET with request body”问题以了解原因。

我提到这一点只是因为您的示例显示了 GET 请求。如果您正在执行 POST 或 PUT,请继续阅读,但如果您确实在项目中执行 GET 请求,我建议您改为关注 kondu's solution。 .


话虽如此,要使用 JSON 或 XML 消息正文,请包含一个(未注释的)方法参数,该参数本身是表示消息的 JAXB bean。

因此,如果您的邮件正文如下所示:

{"hello":"world","foo":"bar","count":123}

然后你将创建一个相应的类,如下所示:

@XmlRootElement
public class RequestBody {
    @XmlElement String hello;
    @XmlElement String foo;
    @XmlElement Integer count;
}

您的服务方法将如下所示:

@POST
@Path("/GetHrMsg/json_data")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public void gethrmessage(RequestBody requestBody) {
    System.out.println(requestBody.hello);
    System.out.println(requestBody.foo);
    System.out.println(requestBody.count);
}

哪个会输出:

world
bar
123

有关通过 JAXB 使用不同类型的 HTTP 数据的更多信息,我建议您查看问题“How to access parameters in a RESTful POST method”,其中包含一些很棒的信息。

关于java - java restful服务中如何消费json参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28983048/

相关文章:

javascript - 如何让 JSONP 与 jQuery 一起工作?

javascript - 选中的单选按钮发送 AJAX 调用并附加单选按钮

java - 为什么这个语法在 Java 中有效?

php - JSON 从 PHP 到 JavaScript

java - JSON 到 Java 的转换以及使用 DAO 的映射

java - RestTemplate -- 默认超时值

android - Android 中的连接拒绝错误

java - 在java中使用正则表达式在数字之前获取字符串

java - 未找到问题(请求的资源 [/CustomerManager/] 不可用)

java - 数组列表的成本