如果在运行时不知道其类时,如何从反序列化的Feed中提取值?

时间:2015-05-21 23:18:21

标签: java json serialization jackson

我正在使用Jackson对反序列进行反序列化并从中提取特定值。我试图在不知道在运行时选择哪些Feed的情况下执行此操作。我试图创建一个包含反序列化feed的方法的泛型类,它的工作原理很奇怪。问题是如果没有明确说明我要从哪个课程中提取,我就无法从中提取任何信息。

public class Motor<T> {

    final ObjectMapper jsonMapper = new ObjectMapper(); 

    public Object pullJson( String url, Object blah ) throws IOException{

        @SuppressWarnings("unchecked")
        T mapped = jsonMapper.readValue(new URL(url), (Class<T>) blah);

        return mapped;
    }

    //Some other code
}

public class Root{
    public static String value;

    public String getValue(){
        return value;
    }
}

public class Propeller {
    public static void main(String[] args) throws IOException{
        Motor<?> motor = new Motor();
        List<Class<?>> classes = new ArrayList<Class<?>>();
        classes.add(Root.class)

        String url = "blah.com/blah.json"
        Object blah = classes.get(0);

        blah = motor.pullJson(url, blah);

        System.out.println(blah.value);
    }
}

我认为将类传递给方法而不知道类将是什么的唯一方法是将类参数设置为Object,然后将泛型类传递给它。

如果我要求Root.value,它会给我值的值,但我不知道该方法在运行时将采取什么类。并试图对宣布为blah的类采取行动将告诉我价值无法解决。我觉得我的思维过程在尝试将一个类作为一个对象传递并以这种方式读取值时存在极大的缺陷。

0 个答案:

没有答案