Как retorfit2 может исправить этот json? - PullRequest
0 голосов
/ 07 декабря 2018

Моя строка json создается следующим образом:

    header('Content-type:text/json');
    if (mysql_num_rows ( $result ) != 0) {
        $row = mysql_fetch_assoc($result);
        $jobj=new stdclass();
        foreach($row as $key=>$value){
            $jobj->$key=$value;
        }
    }
    echo json_encode($jobj,JSON_NUMERIC_CHECK);

В браузере результат равен {"user_id":1,"step":1,"status":1}.

Мой javabean:

public class Login {
    private int user_id;
    private int status;
    private int step;

    public Login(int user_id, int status, int step) {
        this.user_id = user_id;
        this.status = status;
        this.step = step;
    }
}

set... получить ... и т.д.

Когда я использую Retrofit2:

instance = new Retrofit.Builder()
                .client(okHttpClient)
                .baseUrl("http://192.168.1.108/")
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();

Я получаю это

android.content.res.Resources $ NotFoundException:Строковый идентификатор ресурса # 0x1

Когда я изменяю JavaBean на это:

public class Login {
    private String user_id;
    private String status;
    private String step;


}

Я получаю правильный результат.Но я хочу число, а не строку.Как это сделать?

1 Ответ

0 голосов
/ 07 декабря 2018

Проблема не в Retrofit или JSON.

Ресурсы $ NotFoundException произошли, когда вы попытались установить для текста значение TextView.

Если в методе передано целое число setText из TextView, он ищет строковый ресурс и вылетает, если не найден.

Итак, вы должны сначала преобразовать Integer в String перед установкой его в TextView.

Используйте что-то вроде этого:

textView.setText(String.valueOf(login.user_id));
...