-
Notifications
You must be signed in to change notification settings - Fork 514
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
[BUG]Kotlin 反序列化错误 #276
Comments
你好, 这里 data class AccessTokenResponse(
@field:JSONField(name = "access_token")
var accessToken: String? = null,
@field:JSONField(name = "expires_in")
var expiresIn: Int? = null,
@field:JSONField(name = "scope")
var scope: String? = null,
@field:JSONField(name = "token_type")
var tokenType: String? = null
): Serializable |
想请问一下,这个地方加 @field 原因是什么?有什么特殊意义吗? |
因为需要注解的字段是在构造函数里 |
你可以去掉 这里注解没有生效, 默认使用getter的方法名作为key, kotlin会自动将字段编译它的getter setter 你可以使用 使用 |
你好, 我再汇总一下吧, data class AccessTokenResponse(
@JSONField(name = "access_token")
var accessToken: String? = null
) 上面的 class AccessTokenResponse{
private String accessToken;
public AccessTokenResponse(@JSONField(...) String accessToken){
this.accessToken=accessToken;
}
public String getAccessToken(){........}
public void setAccessToken(.....){........}
} 反编译发现 当 data class AccessTokenResponse(
@field:JSONField(name = "access_token")
var accessToken: String? = null
) 反编译大概这样 class AccessTokenResponse{
@JSONField(....)
private String accessToken;
public AccessTokenResponse(String accessToken){
this.accessToken=accessToken;
}
public String getAccessToken(){........}
public void setAccessToken(.....){........}
} 这样在目前的版本就注解生效符合你的预期, 后期fastjson2会对kotlin这种在构造函数里注解做支持的, 敬请期待! 当 class AccessTokenResponse{
private String accessToken;
public AccessTokenResponse(String accessToken){
this.accessToken=accessToken;
}
public String getAccessToken(){........}
@JSONField(....)
public void setAccessToken(.....){........}
} 这样你应该知道了为何这样写吧 |
已经支持,你可以用2.0.4-SNAPSHOT版本验证,需要依赖 <dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-reflect</artifactId>
</dependency> |
感谢大佬的指点,我通过这次交流也收益匪浅,之前从来没有注意在构造函数中也有可能生成注解。 |
已验证,感谢温少的支持 |
https://github.com/alibaba/fastjson2/releases/tag/2.0.4 |
问题描述
Kotlin 反序列化错误
环境信息
请填写以下信息:
重现步骤
如何操作可以重现该问题:
期待的正确结果
AccessTokenResponse(accessToken=MTUZNGNKNMITZTVMMC0ZYTY0LWFIZJCTMZJLMDIYMMY4OGUW, expiresIn=null, scope=, tokenType=null)
相关日志输出
请复制并粘贴任何相关的日志输出。
附加信息
The text was updated successfully, but these errors were encountered: