gpt4 book ai didi

android - 如何使用 MOSHI 将 un json 字符串解析为列表

转载 作者:行者123 更新时间:2023-12-02 13:25:23 25 4
gpt4 key购买 nike

我正在寻找一个这样构建的结果 json:

{"list": [
{
"data1": "data1",
"transaction": {
"data2": "data2",
"data3": "data3"
},
"breakdowns": [
{
"data4": "data4",
"data5": "data5"
}
]
}
]}
我正在使用 moshi 和 okHttpClient 来处理这个 json。
我建立数据类正确
所以现在当我尝试解析它时(像那样):
 200 -> {
val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()

val type: Type = Types.newParameterizedType(List::class.java,PaymentRequest::class.java)

try{
val q: JsonAdapter<List<PaymentRequest>> = moshi.adapter(type)
paymentRequest = q.fromJson(response.body!!.source())!!
}catch (e: Exception) {
println(e)
}

}
我得到了这个错误: com.squareup.moshi.JsonDataException:应为 BEGIN_ARRAY,但在路径 $ 处为 BEGIN_OBJECT

最佳答案

您不能将此 json 视为列表。它本身不是一个列表,但实际上是一个 json 对象,包含 一个列表。
为了解决这个问题,首先构建一个类来包装 "list" :

@JsonClass(generateAdapter = true)
data class Wrapper(@Json(name = "list") val list: List<PaymentRequest>)
那么你就可以开始了:
val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
val adapter = moshi.adapter<Wrapper>(Wrapper::class.java)
val paymentRequests = adapter.fromJson(response.body!!.source())!!.list

关于android - 如何使用 MOSHI 将 un json 字符串解析为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64497859/

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