找不到明确的方法:class com.fasterxml.jackson.databind.node.ArrayNode.get(java.lang.Long)
我有一个找不到明确的方法:class com.fasterxml.jackson.databind.node.ArrayNode.get(java.lang.Long),java,json,spring-mvc,jackson,Java,Json,Spring Mvc,Jackson,我有一个springmvc项目,其中Maven管理依赖项。我需要读取JSON并向视图显示其内容 给定一个简单的JSON对象 { "items" : [{"model" : "m1"}, {"model" : "m2"}, {"model" : "m3"}] } 我利用来自的包来读取和解析文件,然后在@Controller JsonNode itemsNode = Node.path("items"); model.addAttribute("items", itemsNode); 在
springmvc
项目,其中Maven
管理依赖项。我需要读取JSON并向视图显示其内容
给定一个简单的JSON对象
{
"items" : [{"model" : "m1"}, {"model" : "m2"}, {"model" : "m3"}]
}
我利用来自的包来读取和解析文件,然后在@Controller
JsonNode itemsNode = Node.path("items");
model.addAttribute("items", itemsNode);
在JSP上,我检索值
Item 0: ${items.get(0)}, Item 1: ${items.get(1)}, Item 2: ${items.get(2)}
我遇到的问题是,
当我使用时,一切正常
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>
org.codehaus.jackson
杰克逊地图绘制者
1.9.13
org.codehaus.jackson
jackson core asl
1.9.13
但我犯了个错误
HTTP状态500-javax.el.MethodNotFoundException:找不到明确的方法:class com.fasterxml.jackson.databind.node.ArrayNode.get(java.lang.Long)
当我将两个
替换为
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.1</version>
</dependency>
com.fasterxml.jackson.core
杰克逊数据绑定
2.5.1
没有源代码更改(除了import
语句)。弹簧为4.1.5.1释放
${items.get(0)}
JSP将0视为长的,但ArrayNode.get()
。退房简而言之,您可以尝试以下方法:
${items.get( (0).intValue() )}
是的,我注意到了。所以尝试了
Integer.parseInt(“0”)
和新的整数(0)
,但没有成功。你的方法很有效,非常感谢。但我也想知道为什么0在不同版本的Jackson上会受到不同的对待。是的,我自己也很想知道。我查看了Javadocs,两个版本都有get(int)。我假设解释JSP应该是JEE实现的工作,发现Tomcat 8.0.9给了我另一个错误,无法找到明确的方法:class com.fasterxml.jackson.databind.node.ArrayNode.get(java.lang.Integer)
。但是Tomcat的更高版本可以很好地配合您的方法(在8.0.12和8.0.20上进行了验证)。请确保使用最新版本的Jackson:2.2或类似版本解决了int
vsInteger
重载的一些问题;所以像2.5.1这样的版本应该可以更好地工作。