Java 如何使用Jackson流式API将以下文件反序列化为泛型类型变量

Java 如何使用Jackson流式API将以下文件反序列化为泛型类型变量,java,jackson,Java,Jackson,关于如何使用Jackson流式API将以下文件反序列化为泛型类型变量,我有一个问题 { “key1”: {“value”:{…} }, “key2”: {“value”:{…} }, “key3”: {“value”:{…}} } 我有一些代码可以使用以下方法反序列化整个文件: Map<K, ValueClass<V>> map = mapper.readValue(new File(fileName), someTypeReferForMapFunc ());

关于如何使用Jackson流式API将以下文件反序列化为泛型类型变量,我有一个问题

{ “key1”: {“value”:{…} },
  “key2”: {“value”:{…} },
  “key3”: {“value”:{…}}
}
我有一些代码可以使用以下方法反序列化整个文件:

Map<K, ValueClass<V>> map = mapper.readValue(new File(fileName), someTypeReferForMapFunc ());
then store to a HashMap using put (omit here)
还是失败了。有人知道我如何读取K类型的密钥,以便将K密钥放入Kvmap吗


谢谢,

Hmm,你的问题不清楚,什么是K类,地图键的类,如果不是字符串的话。枚举?映射键的通用类。就像HashMap中的K一样。它可以是任何类型。你知道泛型是占位符吗?你不能实例化泛型,如果你需要一个实例,你总是需要一个特定的类。当然,一些处理数据的方法可以是泛型的。因此,此类方法接收泛型参数。但要实例化一个对象,应该决定它是什么类型。当您编写jp.readValueAsAClass.class时,您指示Jackson实例化该partucular类或反映AClass的类(如果后者是接口),并用Json流中的数据填充它。
private HashMap<K, ValueClass<V>> loadFileUsingStreamAPI(String fileName){
    JsonFactory f = new MappingJsonFactory();     
    JsonParser jp = f.createJsonParser(new File(fileName));
    JsonToken current;
    HashMap<K, ValueClass<V>> kvmap = new HashMap(...);
    current = jp.nextToken();     
    if (current != JsonToken.START_OBJECT) {            
        System.out.println("Error: root should be object: quiting.");          
        return;     
    }
    while (jp.nextToken() != JsonToken.END_OBJECT) {       
        String key = jp.getCurrentName();   (1)
        current = jp.nextToken();
        if (current == JsonToken.START_OBJECT) {
            ValueClass val = mapper.readValue (jp, ValueClass.class);
            Kvmap.put(key, val); //(2)
        }
        else {skip to next object...}
    }
    return Kvmap;
}
K key = (K)jp.readValueAs(String.class);