改造在字符串中转换我的字段Int

时间:2018-04-25 13:48:01

标签: android retrofit2

我正在尝试使用改造库。 我很开心:

   Start  Stop  SameValue  Value_dfA  Value_dfB
0      0    50          1        0.0        0.0
1     51   100          0        0.0        1.0
2    101   200          1        1.0        1.0
3    201   300          0        0.0        1.0
4    301  1000          1        0.0        0.0

以及我的改装对象的定义:

    @FormUrlEncoded
@POST("login")
fun login(@Field("username") username: String,
          @Field("password") password: String,
          @Field("_auth_code") authCode: Int = 0

): Observable<String>

但当我执行我的请求时,我的“_auth_code”字段作为字符串收到服务器。

enter image description here

我不会被转换为String?

感谢的

3 个答案:

答案 0 :(得分:2)

这是因为@FormUrlEncoded和@Field。如果我这样保存用户:

@POST("users")
@FormUrlEncoded
Call<User> registerFormUser(@Field("name") String name,
                            @Field("verified_acc") boolean verified_acc,
                            @Field("points") int points);

那么JSON结果将是:

{
    "name": "Robert",
    "verified_acc": "false",
    "points": "0",
    "id": 8
}

所以我的布尔值和整数值现在是字符串。

但是,如果您这样保存它:

@POST("users")
Call<User> registerUser(@Body User user);

那么JSON结果将是:

{
    "id": 9,
    "name": "George",
    "points": 0,
    "verified_acc": false
}

第二种方法的唯一问题是它会按字母顺序更改顺序。如果您对此没有任何问题,可以将其保存而无需将字段转换为字符串。

答案 1 :(得分:0)

我创建了一个这样的对象:

data class UserLogin(val username: String, val password: String, val code: Int = 0)

并制作

@POST("login")
fun login(@Body user: UserLogin

): Observable<String>

答案 2 :(得分:0)

代替int - long。

实施例: 在这里输入代码@Field(“_ auth_code”)authCode:long = 0