java - 使用 jackson 将 json 对象列表转换为 hashmap

标签 java jackson objectmapper

有没有一种方法可以使用内置的 Jackson 功能将 json 对象列表转换为使用 java 的 HashMap

解释: 我需要解析的json结构

{
    list:[
        {
            keyId : 1,
            keyLabel : "Test 1",
            valueId: 34,
            valueLabel: "Test Lable"
        },
        {
            keyId : 2,
            keyLabel : "Test 2",
            valueId: 35,
            valueLabel: "Test Lable"
        },
        {
            keyId : 3,
            keyLabel : "Test 3",
            valueId: 36,
            valueLabel: "Test Lable"
        }
    ]
}

我期待的对象模型,

class Key{
    int keyId;
    String keyLable;

    hashCode(){
    return keyId.hashCode();
    }
}

class Value{
    int valueId;
    String valueLable;

    hashCode(){
    return valueId.hashCode();
    }
}

我需要将上面的json列表转换成这样的map,

HashMap<Key,Value> map;

最佳答案

我建议手动完成。你只需要写几行。类似的东西

    ObjectMapper jmap = new ObjectMapper();
    //Ignore value properties
    List<Key> keys = jmap.readValue("[{}, {}]", jmap.getTypeFactory().constructCollectionType(ArrayList.class, Key.class));
    //Ignore key properties
    List<Value> values = jmap.readValue("[{}, {}]", jmap.getTypeFactory().constructCollectionType(ArrayList.class, Value.class));

    Map<Key, Value> data = new HashMap<>();
    for (int i = 0; i < keys.size(); i++) {
        data.put(keys.get(i), values.get(i));
    }

注意:您的 json 和模型中存在拼写不匹配 (valueLabel != valueLable)。

关于java - 使用 jackson 将 json 对象列表转换为 hashmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35788634/

相关文章:

java - Java 小程序可以使用硬件 API 吗?

spring - Jackson @JsonFilter 在字段或方法级别使用时未得到应用

java - 用于泛型类型的 Jackson 反序列化器

java - ObjectMapper - 如何在 JSON 中发送空值

java - 将 Instant.ofEpochSecond() 对象格式反序列化为 Instant?

ios - 使用 Alamofire 返回对象数组

java - 顶级 Activity 必须位于自定义包之外吗?

java - Java 按时间间隔运行循环

java - 如何使用RandomAccessFile将UTF8数据写入xml文件?

java - Spring Boot 自动配置的 Jackson ObjectMapper 默认情况下不用于 WebFlux WebClient