com.fasterxml.jackson.databind.node.ObjectNode 无法转换为 org.codehaus.jackson.node.ObjectNode

com.fasterxml.jackson.databind.node.ObjectNode cannot be converted to org.codehaus.jackson.node.ObjectNode

我正在使用 play2.2.1,现在我遇到了错误:

com.fasterxml.jackson.databind.node.ObjectNode 无法转换为 org.codehaus.jackson.node.ObjectNode

代码是这样的:

package controllers;

import play.*;
import play.data.*;
import play.mvc.*;
import play.db.ebean.*;

import views.html.*;

import java.util.*;
import models.*;
import com.avaje.ebean.ExpressionList;

import play.data.validation.Constraints.Required;

import scala.*;

import play.libs.Json;
import org.codehaus.jackson.node.ObjectNode;
public class Application extends Controller {

//create JSON data
public static Result ajax() {
    String input = request().body().asFormUrlEncoded().get("input")[0];
    ObjectNode result = Json.newObject();
    if(input == null) {
        result.put("status", "BAD");
        result.put("message", "Can't get sending data...");
        return badRequest(result);
    } else {
        result.put("status", "OK");
        result.put("message", input);
        return ok(result);
    }
}

错误发生在ObjectNode result = Json.newObject();。 但是,我通过[][1]https://playframework.com/documentation/2.0/api/java/play/libs/Json.html

确认静态方法newObject()的return值为org.codehaus.jackson.node.ObjectNode

API 引用的版本是 2.0,而不是 2.2,所以这里存在一些不同? 深刻地,当我导入 com.fasterxml.jackson.databind.node.ObjectNode 并删除 import org.codehaus.jackson.node.ObjectNode; 时,应用程序运行良好。 谁能解释这种行为? 为什么错误消息与 API 引用相矛盾?

我假设在一个项目中混合了两个版本的 Jackson 库。旧版本使用 org.codehaus.jackson 命名空间,而新版本使用 com.fasterxml.jackson,因为它们是从 Codehaus 迁移而来的。我遇到了同样的问题,当我使用更新版本的 Jackson 并且重构无法正常工作时。 类 不兼容,因此您必须始终使用 com.fasterxml.jackson