获取响应JSON对象webservice RESTful java

时间:2017-08-23 20:16:14

标签: java json web-services tomcat restful-architecture

当我访问我的网址http://localhost:8081/projectName/pathh/param以显示我创建的JSON对象时

"Employee": [{
    "id": "param"
}]

这是我在Java中的代码。我使用Eclipse + Tom Cat Server。

@Path("/pathh")
@GET
    @Path("{parameter}")

    public Response getJSONObj(@PathParam("parameter") String parameter) {

        JSONObject jsonObj = new JSONObject();

        JSONArray jsonarray = new JSONArray();

        jsonObj.put("id", parameter);
        jsonarray.put(jsonObj);
        System.out.println(jsonarray);
        JSONObject jsonMain = new JSONObject();
        jsonMain.put("Employee", jsonarray);
        System.out.println(jsonMain.toString());
        System.out.println(Response.status(200).entity(jsonMain).build());
        return Response.status(200).entity(jsonMain).build();
        }

我收到了这个错误:

  

HTTP状态500 - java.lang.IllegalArgumentException:错误的数量   参数

     

输入例外报告

     

message java.lang.IllegalArgumentException:参数数量错误

     

description服务器遇到阻止它的内部错误   完成此请求。

2 个答案:

答案 0 :(得分:3)

package com.tests;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
@Path("/path/{parameter}")

public class Test1 {
    @GET
   public Response getJSONObj(@PathParam("parameter") String parameter) {

        JsonObject jsonObj = new JsonObject();
        JsonArray jsonarray = new JsonArray();

        jsonObj.addProperty("id", parameter);
        jsonarray.add(jsonObj);
        System.out.println(jsonarray);
        JsonObject jsonMain = new JsonObject();
        jsonMain.add("Employee", jsonarray);
        System.out.println(jsonMain.toString());
        System.out.println(Response.status(200).entity(jsonMain).build());
        return Response.status(200).entity(jsonMain.toString()).build();
        }

}

我使用Jersey作为Jax-RS API实现。可以在此处的教程中找到针对运动衫的配置。 jersey-server和jersey-servlet作为依赖项包含在内,web.xml有一个用于jersey servlet映射的条目。

答案 1 :(得分:0)

如果您可以调试它并找到它失败的行,或者它是否从未进入该方法并且您的应用程序接线/注释出现问题,这将有所帮助。

那就是说,我怀疑如果你删除或注释掉这行

System.out.println(Response.status(200).entity(jsonMain).build());

它会起作用。