[alibaba/fastjson]对kotlin的data class支持还是有问题

2025-10-31 856 views
7

data class 只有一个field时,会报告数组越界问题

回答

2

能提供错误信息么?

4

//This is a Java class public class BaseBean {

@Override
public String toString() {
    try {
        return JSONToBeanHandler.toJsonString(this);
    } catch (JSONFormatException e) {
        e.printStackTrace();
    }
    return super.toString();
}

}

//This is the Kotlin data class which may cause crash data class LogoutResult constructor(@JSONField(name = "msg") var msg: String): BaseBean()

//The following is the data received form server { "data": { "msg": "bye" }, "meta": { "code": 200 } }

//This is the crash information java.lang.ArrayIndexOutOfBoundsException: length=1; index=1

5

@wenshao 不好意思,错误日志已经上传

3

data class WiFiLoginResult constructor( @JSONField(name = "wifi_user") var wifiUser: WiFiUser, @JSONField(name = "user") var user: User, @JSONField(name = "token") var token: String): BaseBean()

data class WiFiUser constructor( @JSONField(name = "loginPath") var loginPath: String, @JSONField(name = "minHeadImgUrl") var minAvartarUrl: String, @JSONField(name = "nickname") var nickname: String, @JSONField(name = "sex") var gender: String, @JSONField(name = "unionId") var uid: String ): BaseBean()

服务端返回的wifi_user数据项,如果仅有上面类中的一部分的话,也会发生异常 { "data": { "token": "2|1:0|10:1541403557|5:token|20:OUJKcjk6OmVhMjg3Zg==|fb6289021515404c7a743bd52ff867de90006c0970d081076f8235ca16666e62", "user": { "gender": 2, "nickname": "mattj", "uid": "9BJr9" }, "wifi_user": { "loginPath": "wifi_logged", "unionId": "470B52CEFD554EE3A6D4C1162D5D2C25" } }, "meta": { "code": 200 } }

create instance error, public com.wifi.mask.user.entity.WiFiUser(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)