Gson でa をデシリアライズしようとしてRSAPublicKey
いますが、思いどおりに動作しません。GsonRSAPublicKey
は、引数なしのコンストラクターがないと言ったため、最初に不平を言ったので、次のように作成しましたInstanceCreator
。
public static class PublicKeyInstanceCreator implements InstanceCreator<RSAPublicKey> {
public RSAPublicKey createInstance(final Type type) {
try {
final KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(2048);
final KeyPair key = keyGen.generateKeyPair();
return (RSAPublicKey) key.getPublic();
} catch (final NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
}
Gsonオブジェクトの作成時に登録しました
Gson gson = new GsonBuilder().registerTypeAdapter(RSAPublicKey.class, new PublicKeyInstanceCreator()).create();
現在、Gson は正常に動作しているようにRSAPublicKey
見えますが、Json ファイルの解析から作成されるRSAPublicKey
オブジェクトはPublicKeyInstanceCreator
、逆シリアル化プロセス中にフィールドが変更されることはありません。Gsonに必要なオブジェクトを正しく返すにはどうすればよいですか?