当前位置: 首页 > 知识库问答 >
问题:

Json在多个Java对象中反序列化

岳均
2023-03-14

我尝试反序列化json:

{
"date": "2021_05",
"uuid": "3ba8b966-993f-49e0-b349-e528843a382c",
"dataset": "dataset",
"hmm_hit": "hit",
"hmm_evalue": "6.7e-186",
"hmm_score": "610.9"  
},

我有两个实体:

@Entity
public class HmmResult {
 @Id
 @GeneratedValue
 @JsonIgnore
 private Integer id;

 @JsonProperty("hmm_hit")
 private String hmm;

 @JsonProperty("hmm_evalue")
 private String eValue;

 @JsonProperty("hmm_score")
 private Float score;
 }

@Entity
public class Protein {
    @Id
    @GeneratedValue
    @JsonIgnore
    private Integer id;

    @JsonProperty("date")
    private String date;

    @JsonProperty("uuid")
    private String uuid;

    @JsonProperty("dataset")
    private String dataset;

   @OneToOne
   @JsonDeserialize(as = HmmResult.class)
   private HmmResult hmmResult;

如何使用一个json条目同时反序列化两个实体?以下是使用Jackson ObjectMapper的main摘录:

ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
            Protein p = objectMapper.readValue(new File(file), Protein.class);

它解析日期、uuid和数据集,但不能解析具有hmm_subfamily、hmm_evalue和hmm_score值的HmmResult对象:我得到错误:p.getHmmResult():null。(HmmResult hm=ObjMapper.readValue(new File(file), HmmResult.class);单独工作也很好)。

共有1个答案

华献
2023-03-14

这有一个注释。应该这样工作:

public class Protein {
   @JsonProperty("date")
   private String date;

   @JsonProperty("uuid")
   private String uuid;

   @JsonProperty("dataset")
   private String dataset;

   @JsonUnwrapped
   private HmmResult hmmResult;
}

var protein = new ObjectMapper().readValue(new File(file), Protein.class);
 类似资料:
  • 问题内容: 你好亲爱的同事们, 我有一个Garden类,在其中我可以序列化和反序列化多个Plant类对象。如果想将其分配给mein静态方法中的调用变量,则可以进行序列化,但是不能进行反序列化。 反序列化代码: 我的调用代码: 编辑 我有一个空的Pointer异常 @NilsH的解决方案工作正常,谢谢! 问题答案: 如何序列化整个列表呢?无需序列化列表中的每个对象。 如果那不能解决您的问题,请发布有

  • 我有一个杰克逊多态性问题。我想将JSON数据反序列化为多态类型。通过阅读Jackson文档,我可以将JSON数据反序列化为多态类型。不过,我有一个特例。我有一个类结构如下: 注意:类栏除了继承的“类型”字段之外没有任何其他成员变量。 如果我传入上面的json数据,如: 我得到了类似“无法从end_token中反序列化类条”的信息。我相信这是因为JsonTypeInfo和JsonSubTypes注释

  • 问题内容: 我正在尝试反序列化(使用gson)如下所示的JSON对象: 我该如何处理?我什至不知道该怎么称呼- 这里代表了多个“项目”,但这不是一个数组。当我尝试将其反序列化为数组时,程序在“预期的Begin_Array但找到Begin_Object”异常时崩溃。当我尝试将其反序列化为Strong对象时(请参见下面的类),程序将运行,但所有字段均返回null。 这是我尝试将其映射到的类: 完整的J

  • 我试图获取我的Web请求JSON输出并解析它。这是输出 我为这些结果创建了公共课程 当我尝试反序列化Record类并选择名称时,我从RootObject类获得名称。这是我的密码

  • 有没有办法将一般对象序列化为Json并将Json反序列化为对象<如果对象是一个实体,我可以使用Jackson 2库来实现这个目的<但是如果对象是一个普通类,我该怎么做呢? 例如,我想序列化com.datastax.driver.core.querybuilder。将更新为Json并保存到DB,然后搜索并反序列化它以更新对象,最后将其用作com.datastax.driver.core.Sessio

  • 问题内容: 我有一堂课POJO 我有一个像 我正在使用Jackson ObjectMapper进行反序列化。在不创建任何其他父类的情况下如何获得? 如果不可能,是否有可能获得仅包含json字符串的第一个元素的对象,即在这种情况下和? 问题答案: 您首先需要获取数组 打印(带有)