无法反序列化java.util.ArrayList的实例字段外\u名称标记

无法反序列化java.util.ArrayList的实例字段外\u名称标记,java,json,json-patch,Java,Json,Json Patch,我见过其他人也有同样的错误,但这是由其他原因造成的,所以这些回答对我都没有帮助。我有一个叫做Diff的类: public class Diff { private String path; private String value; private Operation operation; public enum Operation { ADD, REPLACE, REMOVE } //getters and setters }

我见过其他人也有同样的错误,但这是由其他原因造成的,所以这些回答对我都没有帮助。我有一个叫做Diff的类:

public class Diff {
    private String path;
    private String value;
    private Operation operation;
    public enum Operation {
        ADD, REPLACE, REMOVE
    }

    //getters and setters
}
我需要将其应用于Json对象。使用此命令时,我在Diff上使用以下命令:

mapper.valueToTree(diff);
这将返回一个ObjectNode,其中包含:

{"path":"hello","value":"there","operation":"ADD"}
我想把它转换成一个JsonPatch,应用于JsonNode。为了获得JsonPatch,我使用以下方法:

JsonPatch jsonPatch = JsonPatch.fromJson(mapper.valueToTree(diff));
但是,这将引发以下异常:

Can not deserialize instance of java.util.ArrayList out of FIELD_NAME token

知道为什么会这样吗?据我所知,甚至没有一个ArrayList参与其中。

我不认为工厂方法就是为了这个。我认为它严格地试图反序列化传递给
JsonPatch
object.hmm的json。下一步是使用jsonPatch.apply(jsonNode)。据我所知,这是为了将补丁应用到jsonNode中的json。换句话说,如果补丁包含一个ADD,那么jsonNode将有一个额外的key:value对,其中包含补丁信息。我还应该使用其他东西来代替它吗?我不太了解这个API,但它的创建者是一个堆栈溢出成员,所以他们可能很快就会出现。与此同时。我会使用类型(及其子类型),而不是滚动自己的类型。