【发布时间】:2021-03-06 06:50:38
【问题描述】:
我正在尝试在 Kotlin 中使用 Retrofit2 创建一个请求,我的 Json 数据如下所示:
{
"actionRights": [
{
"hasArticlePriceChangeRights": false,
"hasStockLevelViewRights": false
}
],
"stats": {
"errors": 12,
"warnings": 21,
"outOfOrder": 58,
"running": 42
},
"markers": []
}
我需要从我的回复中获取“统计”数据。
我的模型类是什么样的?我尝试了一些方法,但出现此错误。
预期为 BEGIN_OBJECT,但在第 1 行第 2 列路径 $ 处为 BEGIN_ARRAY
编辑:我创建了这个 ModelClass,但我仍然收到此错误: 应为 BEGIN_OBJECT,但在第 1 行第 2 列路径 $
处为 BEGIN_ARRAYdata class StatsModel(
@SerializedName("actionRights") val actionRights : List<ActionRights>,
@SerializedName("stats") val stats : Stats,
@SerializedName("markers") val markers : List<Markers>
) {
data class ActionRights (
@SerializedName("hasArticlePriceChangeRights") val hasArticlePriceChangeRights : Boolean,
@SerializedName("hasStockLevelViewRights") val hasStockLevelViewRights : Boolean
)
data class Stats (
@SerializedName("errors") val errors : Int,
@SerializedName("warnings") val warnings : Int,
@SerializedName("outOfOrder") val outOfOrder : Int,
@SerializedName("running") val running : Int
)
data class Markers (
@SerializedName("deviceGuid") val deviceGuid : String,
@SerializedName("lat") val lat : Double,
@SerializedName("lng") val lng : Double,
@SerializedName("title") val title : Int,
@SerializedName("city") val city : String,
@SerializedName("street") val street : Int,
@SerializedName("serialNumber") val serialNumber : Int,
@SerializedName("LastStatusMessageDateTime") val lastStatusMessageDateTime : String,
@SerializedName("LastStatusMessageBitSet_0_63") val lastStatusMessageBitSet_0_63 : Int,
@SerializedName("LastStatusMessageBitSet_64_127") val lastStatusMessageBitSet_64_127 : Int,
@SerializedName("ActionsStatus") val actionsStatus : Int,
@SerializedName("SpareColumn1") val spareColumn1 : String,
@SerializedName("SpareColumn2") val spareColumn2 : String,
@SerializedName("SpareColumn3") val spareColumn3 : String,
@SerializedName("SpareColumn4") val spareColumn4 : String,
@SerializedName("SpareColumn5") val spareColumn5 : String,
@SerializedName("SpareColumn6") val spareColumn6 : String,
@SerializedName("SpareColumn7") val spareColumn7 : String,
@SerializedName("SpareColumn8") val spareColumn8 : String,
@SerializedName("SpareColumn9") val spareColumn9 : String,
@SerializedName("SpareColumn10") val spareColumn10 : String,
@SerializedName("EstimatedDeliveryDateTime") val estimatedDeliveryDateTime : String,
@SerializedName("IpAddress") val ipAddress : String,
@SerializedName("Active") val active : Int,
@SerializedName("ParentAreaGuid") val parentAreaGuid : String,
@SerializedName("AreaGuid") val areaGuid : String,
@SerializedName("TariffGroupGuid") val tariffGroupGuid : String,
@SerializedName("DeviceType") val deviceType : String,
@SerializedName("EstimateArticleName") val estimateArticleName : String,
@SerializedName("EstimateArticleGuid") val estimateArticleGuid : String,
@SerializedName("lastCoinboxExchange") val lastCoinboxExchange : String,
@SerializedName("lastStatusUpdateTime") val lastStatusUpdateTime : String,
@SerializedName("reportDateTime") val reportDateTime : String,
@SerializedName("hasFinancialInfo") val hasFinancialInfo : Boolean,
@SerializedName("ticketsSold") val ticketsSold : Int,
@SerializedName("cash") val cash : Int,
@SerializedName("cashless") val cashless : Int,
@SerializedName("hasStockLevel") val hasStockLevel : Boolean,
@SerializedName("hasArticlePrices") val hasArticlePrices : Boolean,
@SerializedName("EstDeliveryDays") val estDeliveryDays : String,
@SerializedName("hasOther") val hasOther : Boolean,
@SerializedName("hasOutOfOrder") val hasOutOfOrder : Boolean,
@SerializedName("hasWarning") val hasWarning : Boolean,
@SerializedName("hasError") val hasError : Boolean,
@SerializedName("flags") val flags : List<Flags>,
@SerializedName("actionState") val actionState : String,
@SerializedName("spareColumns") val spareColumns : List<SpareColumns>
)
data class Flags (
@SerializedName("ErrorLevel") val errorLevel : Int,
@SerializedName("ErrorFlag") val errorFlag : Int,
@SerializedName("Translation") val translation : String,
@SerializedName("BitPosition") val bitPosition : Int
)
data class SpareColumns (
@SerializedName("key") val key : String,
@SerializedName("value") val value : String
)
}
我正在处理这样的响应:
fun getStatusService(mandatorGuid: String, @Nullable statusCallbacks: ChartsCallbacks.StatsCallbacks) {
val mandatorItem = MandatorItem(mandatorGuid)
val guid: MutableMap<String, String> = HashMap()
guid["guid"] = mandatorItem.guid
var statusData: StatsModel.Stats
val call: Call<StatsModel> = createAPI().getStatus(mandatorItem.guid)
call.enqueue(object : Callback<StatsModel> {
override fun onFailure(call: Call<StatsModel>, t: Throwable) {
Log.i("TEST", "Status failure: $t")
}
override fun onResponse(call: Call<StatsModel>, response: Response<StatsModel>) {
if (response.isSuccessful) {
Log.i("TEST", "ITEM " + response.headers().toString())
statusData = response.body()!!.stats
Log.i("TEST", "ITEM $statusData")
statusCallbacks.onSuccess(statusData)
}
}
})
}
【问题讨论】:
-
你能告诉我你的完整回复吗
-
这是我的完整 Json:jsonparser.xyz/show_original.php
标签: android kotlin request retrofit retrofit2