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

Jackson是否可以反序列化为map而只使用注释?

戚正业
2023-03-14

我有一个包含映射属性的json字符串,如

{"map":{"1":"value"}, ...}

当Jackson将其反序列化到包含an属性map map 的类中时,它似乎执行了map.put(null,“1=value”)。而在序列化时,它将把对象序列化为相同的格式。

是否有一种方法让jackson正确反序列化到一个只有注解的映射中,或者我需要做一个自定义序列化器。

带有getter/setter的示例对象:

@JsonTypeInfo(use = JsonTypeInfo.Id.MINIMAL_CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
public class exampleObject {
  Map<Long, String> valueMap;

  public Map<Long, String> getValueMap() {
    return valueMap;
  }

  public void setValueMap(Map<Long, String> valueMap) {
    this.valueMap = valueMap;
  }
}

共有1个答案

穆鸿卓
2023-03-14

试试看:

public class ExampleObject {

    private Map<String, Long> valueMap;

    @JsonCreator
    public AccountTagVariableDescription(Map<String, Long> valueMap) {
        this.valueMap = valueMap;
    }

    @JsonAnyGetter
    public Map<String, Long> getValueMap() {
        return valueMap;
    }
}
 类似资料:
  • 你好,团队, 我正在开发一个Spring Boot项目(版本2.3.4版本),其中我正在使用java.time.LocalDate,java.time.LocalDateTime和java.time.LocalTime数据类型来表示几个bean中的一些属性。 然而,这些字段不会被自动反序列化,除非我为它们显式地提供了以下注释以及我的自定义反序列化器。 将这些注释添加到所有的bean中确实是一项耗时

  • 在使用Gson的fromJson方法时,是否有任何方法可以使用给定类的set方法? 我之所以这样做,是因为对目标类的每个

  • 我有一个具有两个属性的JSON对象:“key”(字符串)和“value”(可以反序列化为Java bean)。 问题是,给定一个这样的物体列表,我能把它反序列化为一张地图吗? 当前使用Jackson-databind 2.1

  • 我想将json反序列化到类Foo: IBar有两个实现,但是当反序列化时,我总是想使用第一个实现。(理想情况下,这将使问题变得更容易,因为不需要运行时类型检查) 我相信我可以编写自定义反序列化程序,但我觉得一定有更简单的方法。 我找到了这个注释,它在没有列表的情况下非常有效。

  • 我有一个JSON,它带有一个包含任意键和值类型的标记,我想将其读入Java中POJO内的映射。映射将是指向JsonValue或JsonNode之类的字符串。我正在使用对象映射器解析json。 有人对如何设置我的POJO来与杰克逊一起完成这一任务有什么建议吗?还是一种更好的方式? Json示例: 映射方法: 我的POJO:

  • 我有JSON反序列化和映射到枚举的问题。我从外部API获取JSON,类似于下面两个例子: 我想将空值映射到一些默认的枚举值。 模型对象 和枚举类 对于exists,值模型类包含正确的枚举,但如果我从API获取< code>null,它在模型中仍然是< code>null。 我试图创建一些由< code>@JsonCreator注释的方法,使用< code > @ JsonEnumDefaultVa