从Map <string,list <string =“”>&gt;填充Java对象

时间:2015-07-02 10:41:43

标签: java jackson deserialization

问题是填充java标准类型(Long,Boolean等)的Java对象字段和Map<String, List<String>>的集合。

通过反射检查目标对象的字段可以看到哪个字段是Collection而哪个字段不是。BeanUtils.setProperty(bean, name, stringList.get(0)); 。在第二种情况下,如果Map元素具有单个值,则可以使用类似BeanUtils的东西来设置这样的字段:

BeanUtils.setProperty(bean, name, stringList);

但是在第一种情况下,我不知道如何确定集合的类型(除了顺序检查它是List,Set,Map之外)还有它的类型。简单

List<String>
仅当目标字段类型为public static class TestObject { private int integerField; private String stringField; private List<String> stringList; private List<Integer> intList; ...getters...setters... } 时,

才有效。

但杰克逊图书馆成功地解决了同样的问题。例如,考虑类:

    ObjectMapper mapper = new ObjectMapper();
    TestObject obj = mapper.readValue("{" +
            "\"stringField\": \"stringValue\", " +
            "\"integerField\": 42, " +
            "\"stringList\":[\"1\", \"2\", \"3\"]," +
            "\"intList\":[3, 2, 1]" +
            "}", TestObject.class);

现在可以使用杰克逊图书馆填充内容:

find()

完美的作品。所以我的问题是:有没有办法使用杰克逊这样的图书馆来解决我的问题?

感谢。

0 个答案:

没有答案