Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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 无法反序列化实例,超出起始\u数组标记_Java_Json_Web Services_Jackson - Fatal编程技术网

Java 无法反序列化实例,超出起始\u数组标记

Java 无法反序列化实例,超出起始\u数组标记,java,json,web-services,jackson,Java,Json,Web Services,Jackson,我需要向Web服务发送post请求,但它返回以下异常 java.io.IOException: Server returned HTTP response code: 500 for URL domain.com 实际服务器响应如下所示: <html> <head><title>500 Servlet Exception</title></head> <body> <h1>500 Servlet Except

我需要向Web服务发送post请求,但它返回以下异常

 java.io.IOException: Server returned HTTP response code: 500 for URL domain.com
实际服务器响应如下所示:

<html>
<head><title>500 Servlet Exception</title></head>
<body>
<h1>500 Servlet Exception</h1>
<code><pre>
<script language='javascript' type='text/javascript'>
function show() { document.getElementById('trace').style.display = ''; }
</script>
<a style="text-decoration" href="javascript:show();">[show]</a> org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance
of com.domain.service.beans.spec.SearchSpec out of START_ARRAY token
 at [Source: com.caucho.server.connection.ServletInputStreamImpl@7aafd4d3; line: 1, column: 1]
<span id="trace" style="display:none">
org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance
of com.domain.service.beans.spec.SearchSpec out of START_ARRAY token
 at [Source: com.caucho.server.connection.ServletInputStreamImpl@7aafd4d3; line: 1, column: 1]
    at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163)
    at org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:219)
    at org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:212)
    at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromArray(BeanDeserializer.java:875)
    at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:597)
    at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2732)
    at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1923)
    at org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.readInternal(MappingJacksonHttpMessageConverter.java:135)
    at org.springframework.http.converter.AbstractHttpMessageConverter.read(AbstractHttpMessageConverter.java:154)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.readWithMessageConverters(HandlerMethodInvoker.java:643)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveRequestBody(HandlerMethodInvoker.java:607)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:346)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:427)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:415)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:788)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:717)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:153)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:91)
    at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)
    at com.domain.service.filter.LoggingFilter.doFilter(LoggingFilter.java:91)
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
    at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
    at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:265)
    at com.caucho.server.hmux.HmuxRequest.handleRequest(HmuxRequest.java:436)
    at com.caucho.server.port.TcpConnection.run(TcpConnection.java:682)
    at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:743)
    at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:662)
    at java.lang.Thread.run(Thread.java:662)
</span>
</pre></code>
</body></html>
我的代码

JSONArray jsarray = new JSONArray();
jsarray.add(obj);

服务器错误表明它不需要对象数组。删除此代码


为什么要这样创建json?为什么不使用模型,然后您就可以使用Jackson ObjectMapper来创建请求数据?无论哪种方式,服务器似乎都不满意,因为您正在发送阵列如何使用ObjectMapper?我知道如何将XML响应解析为对象,但不知道JSON,您能帮忙吗。
 public void Search() {


        JSONObject obj = new JSONObject();
        obj.put("startDate", "2014-08-25");
        obj.put("endDate", "2014-08-25");
        obj.put("topX", "1-5");
        obj.put("destId", 684);
        obj.put("currencyCode", "EUR");
        obj.put("catId", 21);
        obj.put("subCatId", 78);
        obj.put("dealsOnly", false);
        obj.put("sortOrder","PRICE_FROM_A");

        JSONArray jsarray = new JSONArray();
        jsarray.add(obj);
        putDataToServer(jsarray.toJSONString());

    }

    public void putDataToServer(String returnedJObject) {

try{
        java.lang.String contentToPost = returnedJObject;

        java.net.URLConnection connection = new java.net.URL("domain.com").openConnection();

        connection.setUseCaches(true);
        connection.setDoInput(true);
        connection.setDoOutput(true);
        connection.setRequestProperty("Content-Length", "" + contentToPost.length());

        connection.setRequestProperty("Content-Type", "application/json");
        connection.setRequestProperty("Cache-Control", "no-cache");

        java.io.OutputStream stream = connection.getOutputStream();
        stream.write(contentToPost.getBytes());
        stream.close();
        System.err.println("request is sent");

        BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        System.err.println(br.readLine());
        br.close();

    }catch(Exception e){
            e.printStackTrace();
            }
    }
JSONArray jsarray = new JSONArray();
jsarray.add(obj);