java - 不使用 LinkedHashMap 反序列化嵌套对象

标签 java json jackson

我的问题是我有一个包含嵌套对象的 json 字符串,并且 Jackson 在反序列化它们时使用 LinkedHashMap 。如何配置 Jackson,使其在构造对象时更喜欢 HashMap 类型?

mapper.readValue("{\"a\":\"b\":\"nes\"}", Map.class)

enter image description here

最佳答案

据我所知,没有任何配置。但是,您可以为 Map.class 编写自定义反序列化器。类似这样的事情:

ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addDeserializer(Map.class, new JsonDeserializer<Map<?,?>>() {
        @Override
        public Map<?,?> deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
            return jsonParser.getCodec()
                    .readValue(jsonParser, HashMap.class);
        }
    });
mapper.registerModule(module);
final Map<?, ?> map = mapper.readValue("{\"a\": {\"b\":1}}", Map.class);
assertEquals(HashMap.class, map.get("a").getClass());

我不认为它会如你所愿,但是,也许它会对你的研究有所帮助。

关于java - 不使用 LinkedHashMap 反序列化嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61208990/

相关文章:

JAVA/CXF 在运行时根据架构验证 JSON(草案 4)

java - 如何从ajax get()方法调用的spring Controller 以json格式返回列表对象

java - 如何在 sbt 中运行多 jvm 测试?

java - Servlet 发送旧版本的实体 (JPA)

java - Gson 库,将 JsonObject 转换为 MyObject

ios - SwiftUI MVVM 的参数 JSONDecoder URLSession 缺少参数

java - Spring框架如何 Autowiring 一个集合

php - 如何从 mysql 获取数据(从最后到第一个顺序)并在 JSON php 中显示?

java - RestEasy : org. codehaus.jackson.map.JsonMappingException : Can not deserialize instance of java. util.ArrayList out of START_OBJECT token(..)

java - Jackson 序列化后功能