使用walt.id API遇类型错误:kotlin.List与java.util.ArrayList不兼容
问题排查与解决建议
1. Klaxon集合类型不匹配问题
这不是Kotlin本身的问题,核心是Klaxon序列化工具的类型校验逻辑,以及walt.id API内部返回的集合类型和你声明的类型不兼容:
- Kotlin的
List是接口,而API内部返回的是Java的ArrayList实现类。Klaxon在反序列化/对象转换时,可能严格要求类型完全匹配,导致抛出类型不匹配异常。 - 解决方式:
- 直接把EHIC模型中
context的类型改为java.util.ArrayList<String>?,和API返回的类型对齐。 - 或者在转换前手动将API返回的ArrayList转为Kotlin List,调用
arrayList.toList()即可。
- 直接把EHIC模型中
2. VerifiableAttestation缺少必填id参数问题
这属于walt.id API的问题:
- 构造方法明确要求
id为必填参数,但API内部创建该对象时没有传入,或者API文档未明确告知需要开发者手动传入id。 - 解决方式:
- 尝试手动生成一个UUID作为
id参数传入(比如UUID.randomUUID().toString()),看看是否能绕过这个错误。 - 如果API文档说明
id会自动生成,那就是API内部实现的bug,需要向walt.id官方反馈。
- 尝试手动生成一个UUID作为
总结
- 集合类型问题:是Klaxon和API集合类型适配的问题,和Kotlin语言本身无关,调整类型或转换集合即可解决。
- 缺id参数问题:属于walt.id API的实现或文档疏漏问题。
内容的提问来源于stack exchange,提问作者noobianov
相关产品推荐
相关产品推荐

