无法找到明确的方法:class com.fasterxml.jackson.databind.node.ArrayNode.get(java.lang.Long)

时间:2015-03-03 18:59:47

标签: java json spring-mvc jackson

我有一个Spring MVC项目,Maven管理依赖项。我需要阅读JSON并将其内容显示在视图中。

给出一个简单的JSON对象

{
    "items" : [{"model" : "m1"}, {"model" : "m2"}, {"model" : "m3"}]
}

我利用Jackson Project中的包来读取和解析文件,然后在@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>

但是我收到了错误,

HTTP状态500 - javax.el.MethodNotFoundException:无法找到明确的方法:class com.fasterxml.jackson.databind.node.ArrayNode.get(java.lang.Long)

当我将<dependency>替换为

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.5.1</version>
</dependency>

没有源代码更改(import语句除外)。春天是4.1.5.RELEASE

1 个答案:

答案 0 :(得分:2)

${items.get(0)}

JSP将0视为Long,但是ArrayNode.get() takes an int。查看the answer to this question for more details。简而言之,你可以试试这个:

${items.get( (0).intValue() )}