Мы получаем некоторую строку 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);
Может кто-нибудь, пожалуйста, помогите мне