Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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 弹簧&x27;未使用适当的响应解析s Json_Java_Json_Spring_Spring Mvc_Jackson - Fatal编程技术网

Java 弹簧&x27;未使用适当的响应解析s Json

Java 弹簧&x27;未使用适当的响应解析s Json,java,json,spring,spring-mvc,jackson,Java,Json,Spring,Spring Mvc,Jackson,我曾尝试让一个控制器在Spring中返回一个JSON响应,但使用Jackson类作为响应,却毫无用处。当然,我的类路径中有jackson-core-asl-1.5.5.jar和jackson-mapper-asl-1.5.5.jar文件 至于appconfig.xml条目,我不确定是否需要这些。我把它们放在那里,作为回到ol'fashion非json ajax之前的最后一次绝望行为 在debug中,我看到控制器得到请求,返回foo,然后在firebug中得到406 错误消息如下所示: 设置为调试

我曾尝试让一个控制器在Spring中返回一个JSON响应,但使用Jackson类作为响应,却毫无用处。当然,我的类路径中有jackson-core-asl-1.5.5.jar和jackson-mapper-asl-1.5.5.jar文件

至于appconfig.xml条目,我不确定是否需要这些。我把它们放在那里,作为回到ol'fashion非json ajax之前的最后一次绝望行为

在debug中,我看到控制器得到请求,返回foo,然后在firebug中得到406

错误消息如下所示: 设置为调试时,从记录器: org.springframework.web.HttpMediaTypeNotAcceptableException:找不到可接受的表示形式

从答复中可以看出: (406)该请求标识的资源仅能够根据请求“接受”头()生成具有不可接受特征的响应

我的appconfig.xml在这里:


我的控制器

@RequestMapping(value="foo/bar", method=RequestMethod.GET)
public @ResponseBody foo getFoo(@RequestParam String fooId) {
    return new foo(fooId); 
}
在jsp上进行ajax调用的地方:

function addRow() {
  $.getJSON("foo/bar", {
    fooId: 1
  }, function(data) {
    alert("it worked.");
  });
}

如果需要更多信息,请告诉我

去掉所有jacksonbean和协商解析器中的json映射。
mvc:annotation-driven
应该配置Jackson序列化工作所需的一切。

发送Accept:application/xml头不起作用。但是发送Accept:application/json实际上是可行的,jackson mapper也起了作用。我去掉了406,得到了json格式的序列化java对象,配置不超过@ResponseBody,返回新的MyObject() :)
感谢skaffman提供的这些信息,感谢Bozho提供的工作标题值:D

这个问题在网上随处可见,我被它咬了好几次。Spring3.0.6(可能还有5)在呈现json时存在一些问题。一旦我改为3.1.0.RELEASE版本,一切都按原样运行。没有任何配置更改。需要注意的是,返回方法必须有@ResponseBody(如前面的示例所示),并且必须位于servlet-context.xml或您的spring上下文配置文件中。

可能是我的答案有点晚,但它可能会帮助其他人访问此问题

我通过添加

 hibernate-validator-4.0.2 
slf4j-api-1.5.6.jar
并给了我另一个异常(类NotFoundException:org.slf4j.LoggerFactory),我通过添加

 hibernate-validator-4.0.2 
slf4j-api-1.5.6.jar

我希望它能帮助别人。

另外,请确保添加两个与jackson相关的jar文件

  • jackson-core-asl-1.9.8.jar
  • jackson-mapper-asl-1.9.8.jar

版本可能不同。

我知道这是一个旧线程,但可能有人会遇到与我相同的问题。我在将应用程序从Spring4.0.3.RELEASE迁移到Spring4.1.0.RELEASE时遇到了这个异常。在我的例子中,将Jackson从1.9.x更新到2.4.x成功了

  • 确保返回的POJO具有get()ER,每个字段一个
  • 即使您确信您的构建系统(Eclipse/Maven)有库,也要确保appserver(Tomcat)有库
  • 这个错误我已经犯过两次了。 刚才我在pojo中添加了getter。406错误消失了,我得到了预期的JSON。 我假设因为我的字段是包保护的(默认访问),它会抓取它们,但我猜不会。 为了便于记录,如果有必要,我还使POJO实现了Serializable、toString()、serialVersionUID、no arg构造函数和显式构造函数


    上次我清理/清除/刷新了我的Tomcat缓存,并做了其他任何事情来强制它重新加载。我相信当我添加Jackson依赖项时,它修复了我的编译时错误,但是由于tomcat没有发现它们,在运行时Spring MVC没有发现Jackson库,并产生了关于不可接受响应类型的406错误。

    从Spring 3.x迁移到Spring 4.x时,我也遇到了同样的异常

    我通过更新来自的jackson依赖项解决了这个问题

        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>
    
    
    org.codehaus.jackson
    杰克逊地图绘制者
    1.9.13
    

    
    com.fasterxml.jackson.core
    杰克逊核心
    2.5.1
    com.fasterxml.jackson.core
    杰克逊数据绑定
    2.5.1
    com.fasterxml.jackson.core
    杰克逊注释
    2.5.1
    

    我不需要其他任何东西。

    我也试过,但对我不起作用。有什么想法吗?我的类路径上有Jackson,我使用的是一个普通的旧对象,但它似乎仍然不能切割它。是的,这是我缺少的东西。对于使用
    @RequestBody
    @ResponseBody
    ,默认的json格式和jackson JAR将被考虑用于pojo的转换。如何在@RequestBody注释上使用
    products=“application/json”