Java 8 Java jackson反序列化json-获取符号=&引用;而不是“是”:&引用;

Java 8 Java jackson反序列化json-获取符号=&引用;而不是“是”:&引用;,java-8,jackson,Java 8,Jackson,这就是我所拥有的。我正在尝试反序列化json,但它不起作用: public class MyClass { private Object attribute; @JsonCreator public MyClass(Object attribute) { this.attribute = attribute; } @JsonProperty("attr") public Object getAttribute

这就是我所拥有的。我正在尝试反序列化json,但它不起作用:

public class MyClass {
    private Object attribute;

    @JsonCreator
    public MyClass(Object attribute) {
        this.attribute = attribute;
    }

    @JsonProperty("attr")
    public Object getAttribute() {
        return attribute;
    }
}
public void method() {
  InputStream eventsStream = this.getClass().getClassLoader()
                .getResourceAsStream("fileName.json");

  ObjectMapper objectMapper = new ObjectMapper();
  objectMapper.readValue(eventsStream, MyClass.class);
}



fileName.json
{
  "value1": 1,
  "value2": [
    {
      "subValue1": "valueExample"
    }
  ]
}
我用符号“=”而不是“:”得到这个结果:


它一定是一个财产或类似的东西。有什么想法吗?谢谢

为什么不将反序列化保存到变量中

MyClass myClassObject = objectMapper.readValue(eventsStream, MyClass.class);
如果这样做,您将在
myClassObject
中直接使用反序列化对象,因此您可以轻松地使用它。 反序列化的另一种方法是使用Gson进行反序列化,如:

new Gson().fromJson(eventStream.toString(), MyClass.class); //you need the eventStream as a String type
进口是这样的:

import com.google.gson.Gson;

您能告诉我们为什么需要打印反序列化的值吗?

实际上,我将其保存到一个变量中,并将其与预期值进行比较,结果不匹配。我只展示了印刷品。我不能使用Gson,因为它是一个遗留代码,他们不允许我包含该库,它应该与jacksonen一起工作。也许这是因为toString方法,它看起来与序列化的不一样。也许为了得到相同的结果,您应该比较2个序列化的json或2个反序列化的json。在您的情况下,您可以序列化结果并查看是否匹配,另一个想法是根据需要重写toString方法,以便将“=”替换为“:”。事实上,我也尝试过使用assertEquals,它显示expected BlablaBlaBlabla:“但是blablabla”=”与assertEquals匹配时,得到错误是正常的Hi!因此,我仔细研究了您的问题,并将文件中的json与您可以使用的结果进行比较:objectMapper.writeValueAsString(myClass)
import com.google.gson.Gson;