如何在JAX-RS中映射动态JSON动态、如何在、RS、JAX

2023-09-04 02:28:24 作者:一身仙女味

我必须使用JAX-RS(RESTEasy作为实现)将JSON映射到Java PoJO。问题是,JSON是动态的。请看这个例子:

{
  "typeCode": "SAMPLE",
  "data": [
    {
      "id": "COMMENTS",
      "answerValue": {
        "type": "YesNoAnswer",
        "value": true
      }
    },
    {
      "id": "CHOICE",
      "answerValue": {
        "type": "SelectListAnswer",
        "values": ["choice1", "choice2"]
      }
    }
  ]
}

动态元素在数据数组中。原则上,每个条目都有一个ID和一个swerValue。但AnswerValue是动态的。根据他的类型,他可以具有单个值(布尔值、字符串、对对象进行编号)或一组值。

Spring MVC与JAX RS比较与分析

如何将其映射到我的Java模型?

推荐答案

感谢他的解决方案@Henrik。在执行他的建议时,我发现了一个不同的解决方案,这个方案更适合我。 我只是使用JsonSubTypes Annotation来处理继承。 这是我的例子:

import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;

@JsonTypeInfo(
        use = JsonTypeInfo.Id.NAME,
        include = JsonTypeInfo.As.PROPERTY,
        property = "type")
@JsonSubTypes({
        @JsonSubTypes.Type(value = YesNoAnswer.class, name = "YesNoAnswer"),
        @JsonSubTypes.Type(value = SelectListAnswer.class, name="SelectListAnswer"),
        @JsonSubTypes.Type(value = SelectAddressAnswer.class, name="SelectAddressAnswer")})
abstract class RequestFormAnswer {

    private String type;

}
 
精彩推荐
图片推荐