ObjectMapper с пользовательским загрузчиком классов - PullRequest
1 голос
/ 19 июня 2019

Мы получаем некоторую строку json, которую необходимо преобразовать в экземпляр класса, который является частью некоторого стороннего jar (который будет загружен на лету), которого нет в пути к классам.

и проблема здесь

Мы получаем ниже вид Json

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

И структура классов java в jar выглядит следующим образом

    class A{

    private String nameType;

    // getters and setters are avaiable
    }

    class B{

    private A a;

    private A b;

    // getters and setters
    }

, когда мы десериализовали вышеjson для класса B, значение, присутствующее в «bbnameType», равно «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);

Может кто-нибудь, пожалуйста, помогите мне

...