Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的Json反序列化_Java_Json_Annotations_Jackson_Fasterxml - Fatal编程技术网

Java中的Json反序列化

Java中的Json反序列化,java,json,annotations,jackson,fasterxml,Java,Json,Annotations,Jackson,Fasterxml,我有以下结构: public class MainDTO { private AbstractInferDTO; getter and setter; } @JsonInfoType(use=Id.Name, include=As.Property, property="type") @JsonSubTypes({ Type(value=Infer1DTO.class, name="infer1"), Type(value=Infer2DTO.class, name="inf

我有以下结构:

public class MainDTO {
  private AbstractInferDTO;

  getter and setter;
}

@JsonInfoType(use=Id.Name, include=As.Property, property="type")
@JsonSubTypes({
  Type(value=Infer1DTO.class, name="infer1"),
  Type(value=Infer2DTO.class, name="infer2")
}) 
abstract public class AbstractInferDTO {}

@JsonTypeName("infer1")
public class Infer1DTO extends AbstractInferDTO {
   private String infer1Name;
   getters and setters
}

@JsonTypeName("infer2")
public class Infer2DTO extends AbstractInferDTO {
   private String infer2Name;
   getters and setters
}
当我尝试反序列化这个结构时,我有一个严重的trable。我使用POST方法,我不确定Json注释是否适用于POST方法,还是仅适用于GET。我已经将这个抽象类更改为普通的公共类,但仍然存在无法识别的字段名AbstractInferedto[“infer1Name”]的错误,不可忽略。我使用了annotation@JsonIgnoreProperties(ignoreUknown=true)或其他方式-objectMapper.configure(在属性上反序列化feature.FAIL,false),但没有任何效果。
你能帮我吗?我没有主意。

您需要发布一个完整的最小测试用例,以JSON作为输入,用于反序列化它的代码,以及您获得的完整堆栈跟踪。您是使用post从客户端发送JSON吗?我使用Jetty server或Weblogic server上运行的Java中的REST API服务,以及Java中的客户端。在我的例子中,json的格式应该是“infer1”:{……},但仍然是“AbstractInferedto”:{……}我无法反序列化此结构。是的,注释也适用于
POST
。你能把你的例子
JSON
payload吗?控制器的方法看起来如何?子类中的属性名称不适合
类型
注释中的属性。我已解决此问题。最初我用的是SpringMVC,我把它改成com.sun.jersey。。。它开始工作了。您需要发布一个完整的最小测试用例,以JSON作为输入,用于反序列化它的代码,以及您获得的完整堆栈跟踪。您是使用post从客户端发送JSON吗?我使用Jetty server或Weblogic server上运行的Java中的REST API服务,以及Java中的客户端。在我的例子中,json的格式应该是“infer1”:{……},但仍然是“AbstractInferedto”:{……}我无法反序列化此结构。是的,注释也适用于
POST
。你能把你的例子
JSON
payload吗?控制器的方法看起来如何?子类中的属性名称不适合
类型
注释中的属性。我已解决此问题。最初我用的是SpringMVC,我把它改成com.sun.jersey。。。它开始工作了