java - JSON序列化: Class name to be picked from annotation

标签 java json annotations jackson

任何人都可以帮助我进行 JSON 序列化吗?我需要使用注释更改限定类名。我不必使用 Map 或其他类。名称应从注释中选取。

->我使用的注释是

@JsonTypeInfo(use = Id.CLASS, include = As.PROPERTY, property ="type") 私有(private)对象菜单;

-> 我能得到的 JSON 是

“菜单”:[“java.util.ArrayList”,[ { “名称”:“菜单_测试”, “数据”:“菜单_123” } ] ],

-> 但我希望它是这样的。

“菜单”:[“列表”,[ { “名称”:“菜单_测试”, “数据”:“菜单_123” } ] ],

最佳答案

您应该使用JsonTypeInfo.Id.NAME,然后您需要使用附加注释指定每个类的名称,例如:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes({
    @JsonSubTypes.Type(value = ArrayList.class, name = "list")
})

关于java - JSON序列化: Class name to be picked from annotation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43166197/

相关文章:

java - fragment 中 ListView 的游标

javascript - 从 json 创建一个列表返回 [object Object] 并且只返回最后一个 li

java - 如何向 avro idl 文件上的 @javaAnnotation 提供参数?

javascript - 将 JSON/Date(1238626800000)/转换为 Unix 时间戳

jquery - 读取页面内容,转换为json,输入SQL?

java - 使用 javax.validation 注解将空字符串转换为 null

java - 强制覆盖 DynamoDB 表名称

java - 列出java项目中resources目录下的所有文件

java - Jackson 忽略抽象类的 xml 根元素

java - 名著证实java字符串是数组?