Tauri 2.0 插件开发踩坑记录(1)
最近在开发 Tauri 2.0
的插件的时候,遇到了一个问题,就是我在 TypeScript
中定义了一个对象参数用来传递给插件,在 Android
端会出问题,定义如下:
guest-js/index.ts
export interface Options {
privacyUrl: string;
isPrivacyDialogRequired: boolean;
}
在 Android
中定义如下:
@InvokeArg
class Options {
lateinit var privacyUrl: String
var isPrivacyDialogRequired: Boolean = true
}
按照这种方式定义之后,如果在调用这个插件的时候,isPrivacyDialogRequired
设置为 false
,在 Android
的结果依然会是:true
。
这个问题在 [阿里巴巴Java开发手册](https://github.com/alibaba/p3c)
中有提到:【强制】POJO 类中布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误。
而 Tauri 2.0
默认使用的序列化框架 jackson 就会出现这个问题。两种方式解决这个问题:
- 不使用
is
开头的属性来定义布尔类型变量; - 则是使用
JsonProperty
注解:
import com.fasterxml.jackson.annotation.JsonProperty
@InvokeArg
class Options {
lateinit var privacyUrl: String
@JsonProperty("isPrivacyDialogRequired")
var isPrivacyDialogRequired: Boolean = true
}
通过这样修改之后,就可以正常处理反序列化了。