私はJSONレスポンスでスキーマからPOJOを生成し、POJOのクラスをコンパイルしてロードしましたが、JSONレスポンスの非直列化時にはデシリアライズできる実際のクラスはありません。私は取得していますJSONをダイナミックロードされたクラスファイルにデシリアライズ
MyClassLoader classLoader = new MyClassLoader(POJOGeneratorForJSON.class.getClassLoader());
Class parentJsonClass = classLoader.loadClass(topLevelclassName, classpathLoc);
ObjectMapper mapper = new ObjectMapper();
byte[] jsonBytes = generator.getBytesFromURL(source);
if(jsonBytes != null){
Object jsonObj = parentJsonClass.newInstance();
jsonObj = mapper.readValue(jsonBytes, Class.class);
}
例外がある:「com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.Class out of START_OBJECT token
」
私はmapper.readValue()
で、私は2番目の引数として実際のクラスを提供する必要があるが、どのように知らないことを知っています。誰かが回避策を教えてくれますか?
からタイプ
parentJsonClass
のオブジェクトを読み取るマノスたくさんのおかげで....働きました! ....私の悪い。しかし、私の最終的な必要性は、ParentJsonClass(私たちはparentJsonClassとしてオブジェクトを持っています)ではなく、ParentJsonClassではなくTypeクラスでメソッドを呼び出すことです。あなたはこれを助けることができますか? – Garry'class parentJsonClass'を使って' Object jsonObj'をその型にキャストできます。だからメソッド 'foo()'が 'parentJsonClass.cast(jsonObj).foo();'と答えた場合 –
上記の手法を使うと、ParentJsonClassクラスのものではなくObjectレベルのメソッドしか見ることができません。私の問題は、そこのクラスのメソッドを知ることさえできないということです。 – Garry