具有自定义类加载器的ObjectMapper

时间:2019-06-19 10:22:21

标签: java jackson objectmapper jackson-databind jackson2

我们得到了一些json字符串,需要将其转换为某个类的实例,该类是某个第三方jar的一部分(将即时下载),而该类不在类路径中。

这里的问题是

我们得到了以下的杰森

{
     "a" :{
     "nameType":"firstNameType"
     },
     "b":{
     "nameType":"lastNameType"
     }
  }

jar中的java类的类结构如下

    class A{

    private String nameType;

    // getters and setters are avaiable
    }

    class B{

    private A a;

    private A b;

    // getters and setters
    }

当我们在json上反序列化到类B时,出现在“ b.b.nameType”中的值是“ firstNameType”,而不是“ lastNameType”。

下面是代码段。

    ClassLoader classLoader = TestClass.class.getClassLoader();
        ClassLoader loader =
                    new URLClassLoader(new URL[] { new 
        File("/Users/asdasd3414234d/Downloads/Default" +
                            ".jar").toURI().toURL() }, classLoader);
        ObjectMapper objectMapper = new ObjectMapper();
            TypeFactory typeFactory = 
        TypeFactory.defaultInstance().withClassLoader(loader);
            objectMapper.setTypeFactory(typeFactory);

      objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, 
         false);
    objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
       Object obj =  objectMapper.readValue(content,Class.forName("defaulttermlibrary.AmlTransaction",true,loader));
        System.out.println(obj);

有人可以帮我吗

0 个答案:

没有答案