java Json多态反序列化

cyvaqqii  于 2023-03-16  发布在  Java
关注(0)|答案(1)|浏览(116)

我正在尝试将JSON文件反序列化到我的Java类中。我已经尝试了所有可能的解决方案,我可以找到与JSON注解,如@JsonSubTypes@JsonTypeInfo和与CLASS,NAME和所有我可以找到的。但是,没有一个解决方案的工作。
请参阅下面的原始JSON文件和类之前的变化。
JSON文件:

{
  "data": [
    {
        "error_msg": "error msg 1",
        "error_code": "error code 1",
        "type": "error"
    },
    {
        "data": [
          {
            "error_msg": "error msg 2",
            "error_code": "error code 2",
            "type": "error"
          }
        ],
        "name": "group1",
        "type": "group"
     }
  ],
  "name": "exceptions_db",
  "version": "1"
}

Java类:
一个一个一个一个一个x一个一个二个一个x一个一个三个一个x一个一个x一个四个一个
在data属性下,模型和JSON中的每一项都可以是一个组或错误对象。
更新:
我尝试将json注解添加到ExceptionItem,但仍然不起作用

@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="type")
@JsonSubTypes({
        @JsonSubTypes.Type(value = Error.class, name = "error"),
        @JsonSubTypes.Type(value = Group.class, name = "group"),
})
public abstract class ExceptionItem {
}

我收到以下错误:

Can not construct instance of com.altair.infrastructures.propertiesFile.jsonResourceLoader.exceptions.ExceptionItem, problem: abstract types can only be instantiated with additional type information
 at [Source: C:\QA\TestCaseGenerator\systemFiles\exceptions\Exceptions_DB.json; line: 3, column: 5] (through reference chain: com.altair.infrastructures.propertiesFile.jsonResourceLoader.exceptions.ExceptionsModel["data"])
tf7tbtn2

tf7tbtn21#

我的问题是我的ObjectMapper来自Jackson包,而我的JSON注解来自fasterxml

相关问题