Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在REST调用中将JSON强制转换为资源_Java_Json_Rest_Jakarta Ee_Glassfish - Fatal编程技术网

Java 在REST调用中将JSON强制转换为资源

Java 在REST调用中将JSON强制转换为资源,java,json,rest,jakarta-ee,glassfish,Java,Json,Rest,Jakarta Ee,Glassfish,我试图接受来自POST的JSON输入,并自动将其转换为资源类,但我不断收到错误: java.lang.ClassCastException: com.foo.MyResource cannot be cast to java.util.Collection 我以为我正确地注释了我的类,但我觉得我遗漏了一些明显的东西。有人能帮我弄明白为什么这段代码不会将下面的JSON解析成MyResource对象吗 我的服务类包含以下方法: @POST @Path("/somepath/{user}") @Co

我试图接受来自POST的JSON输入,并自动将其转换为资源类,但我不断收到错误:

java.lang.ClassCastException: com.foo.MyResource cannot be cast to java.util.Collection
我以为我正确地注释了我的类,但我觉得我遗漏了一些明显的东西。有人能帮我弄明白为什么这段代码不会将下面的JSON解析成MyResource对象吗

我的服务类包含以下方法:

@POST
@Path("/somepath/{user}")
@Consumes(MediaType.APPLICATION_JSON)
public String createUser(MyResource resource, @PathParam("user") String user){
    return "Got resource " + resource + " for " + user;
}
资源如下:

@XmlRootElement 
@XmlAccessorType(XmlAccessType.FIELD) 
public class MyResource {
    public String foo;
    public String bar;
    public int baz;
    public String toString(){
        return foo + " " + bar + " " + baz;
    } }
我的请求信息:

Headers:
Content-Length: 92
Host: requestb.in
Cache-Control: no-cache
Accept-Encoding: gzip,deflate,sdch
Content-Type: application/json
Connection: close
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36
Accept: */*
Cookie: session=eyJyZWNlbnQiOlsiMTZwcXV1NDEiXX0.BiBTRw.qNeCDkVfl-4Xog8hLhYuJFSlEYg; _ga=GA1.2.1701494324.1396374352
X-Request-Id: c9bd3f19-f071-47ad-9adb-d98232a7e8fb
Origin: chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm
Accept-Language: en-US,en;q=0.8

RAW BODY

    [
      {
        "foo": "foo string"
      }, 
      {
        "bar": "bar string"
      }, 
      {
        "baz": 5
      }
    ]

您发送的对象格式不正确:

你应该送

{
   "foo": "foo string",
   "bar": "bar string",
   "baz": 5
}

事实上,您正在发送的对象是对象的数组。这就是为什么有铸造问题。

Doh。成功了。太好了!