gpt4 book ai didi

kotlin - java.lang.IllegalStateException :JSON OBJECT and JSON ARRAY when parsing Json using GSON

转载 作者:行者123 更新时间:2023-12-01 05:50:14 24 4
gpt4 key购买 nike

服务器 JSON 数据使用 Retrofit 显示在事件中。 JSON 数据通过 gson 进行转换。

给出错误:“java.lang.IllegalStateException:预期 BEGIN_ARRAY 但在第 1 行第 2 列路径 $ 处是 BEGIN_OBJECT”

JSON 格式:

{"success":1,"company":[{"Cmp_Id":"1","Cmp_Name":"ABC","GSTIN":"AAAA"}]}

代码:
class Company {

//@SerializedName("Cmp_Id")
var Cmp_Id : Int = 0

//@SerializedName("success")
//val success : String = ""

//@SerializedName("Cmp_Name")
var Cmp_Name : String? = ""

//@SerializedName("GSTIN")
var GSTIN : String? = ""
}


class CompanyList {
val success : String = ""

lateinit var company : ArrayList<Company>
}


interface APIInterface {
@GET("Company.php")
fun getCompanyData() : Observable<List<CompanyList>>
}


object APIClient {

val BASE_URL = "http://10.0.2.2/"
var retrofit:Retrofit? = null
val apIClient:Retrofit?
get() {
if (retrofit == null)
{
retrofit = Retrofit.Builder().
baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build()
}
return retrofit
}
}

MainActivity.kt
private fun fetchData(){
/* compositeDisposable.add(api.getCompanyData()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { companyList-> displayData(companyList)
}
)*/

val retrofit = APIClient.apIClient
if (retrofit != null) {
api = retrofit.create(APIInterface::class.java)
}

api.getCompanyData()
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ companyAdapter.setCompany(it.component1().company)
},{

Toast.makeText(applicationContext, it.message, Toast.LENGTH_SHORT).show()


})
}

最佳答案

改造界面:

interface APIInterface {
@GET("Company.php")
fun getCompanyData() : Observable<List<CompanyList>>
}

提示您期待 CompanyList 列表的改造.但是,您收到的 json 是单个 CompanyList .这就是你得到的 gson 错误告诉你的 - 应该以数组开头,但它是一个对象。

将改造界面更改为:
interface APIInterface {
@GET("Company.php")
fun getCompanyData() : Observable<CompanyList>
}

将提示改造您需要一个类型为 CompanyList 的对象这应该适用于您发布的 json。

关于kotlin - java.lang.IllegalStateException :JSON OBJECT and JSON ARRAY when parsing Json using GSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55413204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com