0

我正在尝试将 jsonResponse 与我的 Java 实体类映射。json 响应如下所示

   "classResults":{
      "classSuggestion":[
          "classA",
          {
            "section":"section c"
          }
      ]
    }
    

我的用于映射的 Java 类可能看起来像这样。我将有一个 ClassSuggestion 对象以映射 classSuggestion 对象。但是,classSuggestion 将如何保存上面的 json 数据?

public class ClassResults {

   ClassSuggestion classSuggestion

}

我的 ClassSuggestion 会如何?

public class ClassSuggestion {

   String classes
   String section
}

如何将其映射到 Java 类或数据类型?

4

2 回答 2

0
@Data // lombok
public class ClassResults {
   private List<ClassSuggestion> classSuggestion; // mapped from array
}

@Data
@NoArgsConstructor
public class ClassSuggestion {
   private String classes;
   private String section;
   public ClassSuggestion(String classes) {
     this.classes = classes; //Handle string "classA"
   }
}
于 2021-04-01T22:28:27.893 回答
0

我通过编写自定义反序列化器解决了这个问题:

class ClassSuggestionDeserializer extends StdDeserializer<Employee> {

   @Override
   public Map<String, String> deserialize(JsonParser jp, DeserializationContext dc) throws IOException, JsonProcessingException {
      ObjectCodec codec = jp.getCodec();
      TreeNode node = codec.readTree(jp);
      JsonNode classResults = node.get("classResults");
      // and finally iterating through the classResults to get string values
   }
}

同时在数据类上,使用了自定义反序列化器的JsonDeserialize。

@JsonDeserialize(using=ClassSuggestionDeserializer.class)
public class ClassSuggestion {

   Map<String, String> classResults;

 }
于 2021-04-02T19:05:24.860 回答