Java - Jackson反序列化 - 如何反序列化接口(interface)数组?

标签 java arrays json jackson deserialization

我有这样的数组。

{
    ImplArray1:[
        {
            ...
        }
        , ...
    ],
    ImplArray2:[
        {
            ...
        }
        , ...
    ]
}

Impl1 和 Impl2 都实现相同的接口(interface)。

如何将两个数组反序列化为两个List

编辑:天啊。这个问题根本没有意义。真的很抱歉生活不好。

我的意思是,数组ImplArray1包含Impl1,数组ImplArray2包含Impl2。 Impl1 和 Impl2 都实现相同的接口(interface)。如何将两者反序列化为 List

最佳答案

我设法提取接近要求的东西的唯一方法是,如果您有一个由两种实现都扩展的父类(super class)。父类(super class)可以实现公共(public)接口(interface)

ObjectMapper om = new ObjectMapper();
TypeFactory tf = om.getTypeFactory();

// map key type
JavaType stringType = tf.constructType(String.class);
// map value type
JavaType listOfSuper = tf.constructParametrizedType(List.class, List.class, Super.class);
// map type
JavaType mapType = tf.constructMapType(Map.class, stringType, listOfSuper);
// finally, do the parsing
Reader fr = new FileReader("C://Temp/xx.json");
Map<String, List<Interface>> map = (Map<String, List<Interface>>)om.readValue(fr, mapType);

static interface Interface  
{
}

static class Super implements Interface 
{
    public String name = "";
    public int age = 0;
}

static class Impl1 extends Super 
{
}

static class Impl2 extends Super
{
}

关于Java - Jackson反序列化 - 如何反序列化接口(interface)数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31265286/

相关文章:

java - 企业架构师脚本: missed method in java api eaapi. jar

json - Grails-仅在加载热代码后才能从JSON响应中排除类

c# - 模型绑定(bind)程序不适用于 JSON POST

java - 释放 "synchronized"锁

Java:JPanel边框旋转但背景不旋转

php - 选择下拉值检查并显示数据库中是否不存在

javascript - 分别带有结果的 promise 数组

c++ - 这个变量赋值有什么不同?

json - Golang从S3读取JSON到内存中的结构

java - 使用 Paint.setStrokeJoin() 和 Paint.setStrokeMiter()