How to handle com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: For input string: "T1V 4Y8" Kotlin

Viewed 50

what im trying to get is user list from https://randomuser.me/api/?results=50 using RetroFit , in mvvm pattren with live data

class MainActivity : AppCompatActivity() {
lateinit var mainViewModel: MainViewModel
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val quoteService = RetrofitHelper.getInstance().create(QuoteService::class.java)
    val repository = QuoteRepository(quoteService)
    mainViewModel = ViewModelProvider(this,MainViewModelFactory(repository)).get(MainViewModel::class.java)
    mainViewModel.quotes.observe(this) {
        Log.d("hello", it.results.toString())
    }
}

} used method

interface QuoteService {
    @GET("/api")
    suspend fun getQuotes(@Query("results") results: Int):Response<QuoteList>

//    baseUrl+/api/ + ?results=1
}

**Tried this method also same issue **

interface QuoteService {
    @GET("/api/?results=50")
    suspend fun getQuotes()):Response<QuoteList>

//    baseUrl+/api/ + ?results=1
}

RetrofitHelper

object RetrofitHelper {
private val baseUrl="https://randomuser.me/"

fun getInstance() : Retrofit{
    return Retrofit.Builder()
        .baseUrl(baseUrl)
        .addConverterFactory(GsonConverterFactory.create())
        .build()

}

} Reposistory

    class QuoteRepository(private val quoteService: QuoteService) {
    private val quotesLiveData = MutableLiveData<QuoteList>()

    val quotes:LiveData<QuoteList>
    get() = quotesLiveData

    suspend fun getQuotes(results:Int){
        val result = quoteService.getQuotes(results)
        if (result.body() != null){
            quotesLiveData.postValue(result.body())
        }
    }
}

ViewModelIsLike

class MainViewModel(private val repository: QuoteRepository) :ViewModel() {
init {
    viewModelScope.launch (Dispatchers.IO){
        repository.getQuotes(20)**Here come my problem if i decrease the number or even i try to the normal way it occurs same problem **
    }
}
val quotes:LiveData<QuoteList>
get() = repository.quotes

}

viewModelFactory

class MainViewModelFactory(private val repository: QuoteRepository):ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
    return MainViewModel(repository) as T
}

}

**Have to show list of user in recycler view **

1 Answers

I think the problem is while parsing the JSON, Somewhere you have declared some number field as String.

I hope your query is resolved.

Related