Caused by: java.lang.RuntimeException: Unable to invoke no-args constructor for interface org.apache.shardingsphere.sharding.api.config.strategy.sharding.ShardingStrategyConfiguration. Registering an InstanceCreator with Gson for this type may fix this problem.
public static class ShardingStrategyConfigurationDeserializer implements JsonDeserializer<ShardingStrategyConfiguration> {
@Override
public ShardingStrategyConfiguration deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
// 解析 JSON 字符串,获取需要的字段值
JsonObject jsonObject = json.getAsJsonObject();
String shardingColumn = jsonObject.get("shardingColumn").getAsString();
String shardingAlgorithmName = jsonObject.get("shardingAlgorithmName").getAsString();
// 创建具体实现类的实例并设置属性值
return new StandardShardingStrategyConfiguration(shardingColumn, shardingAlgorithmName);
}
}
Gson gson = new GsonBuilder()
.registerTypeAdapter(ShardingStrategyConfiguration.class, new ShardingStrategyConfigurationDeserializer())
.create();
ShardingRuleConfiguration shardingRuleConfiguration = gson.fromJson(dataJsonObj, ShardingRuleConfiguration.class);