0

我正在尝试RSAPublicKey使用 Gson 反序列化 a ,但它没有按我希望的那样工作。Gson 首先抱怨是因为它说RSAPublicKey没有无参数构造函数,所以我创建了一个InstanceCreatoras:

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对象是从PublicKeyInstanceCreatorie 返回的任何对象,即在反序列化过程中字段永远不会更改。如何让 Gson 正确返回我想要的对象?

4

0 回答 0