我正在尝试RSAPublicKey
使用 Gson 反序列化 a ,但它没有按我希望的那样工作。Gson 首先抱怨是因为它说RSAPublicKey
没有无参数构造函数,所以我创建了一个InstanceCreator
as:
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
ie 返回的任何对象,即在反序列化过程中字段永远不会更改。如何让 Gson 正确返回我想要的对象?