gpt4 book ai didi

kotlin - JSON解析错误:使用RoyalPay SDK时语法错误,期望{,实际错误,pos 0,fastjson版本1.2.57

转载 作者:行者123 更新时间:2023-12-02 12:58:52 26 4
gpt4 key购买 nike

我正在尝试使用RoyalPay SDK创建订单并进行支付宝付款。响应代码为200,但是我无法解析JSON作为响应。

我该如何解决这个问题?

我使用以下方法创建api请求的代码:

    interface RoyalPayApi {

@FormUrlEncoded
@Headers("Accept: application/json", "Content-Type: application/json")
@PUT("/api/v1.0/gateway/partners/{partner_code}/app_orders/{order_id}")
fun createRoyalPaySDKOrder(@Path(value = "partner_code", encoded = true) partner_code: String, @Path(value = "order_id", encoded = true) order_id: String,
@Query("time") time: Long, @Query("nonce_str") nonce_str: String, @Query("sign") sign: String,
@Field("description") description: String,
@Field("price") price: Int,
@Field("currency") currency: String,
@Field("channel") channel: String,
@Field("operator") operator: String,
@Field("system") system: String): Call<JSONObject> // com.alibaba.fastjson.JSONObject
}

我得到改造服务的代码:
fun createService(): RoyalPayApi {
val retrofit = Retrofit.Builder()
.baseUrl(ROYAL_PAY_ADDRESS)
.addConverterFactory(FastJsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build()

return retrofit.create(RoyalPayApi::class.java)
}

我发送请求和接收响应的代码:
 var api = createService()
var call = api.createRoyalPaySDKOrder(ROYAL_PAY_PARTNER_CODE, order_id, time, ROYAL_PAY_NONCE_STR, sign,
description, price, "AUD", channel, "kate", "android")

call.enqueue(object : Callback<JSONObject>{
override fun onResponse(call: Call<JSONObject>, response: Response<JSONObject>) {
val str = ""
}

override fun onFailure(call: Call<JSONObject>, t: Throwable) {
val str = ""
}
})

这是我收到的回复:

enter image description here

这是响应正文(此处的中文不应影响理解):

enter image description here

这包括原始响应(使用com.google.gson.JsonObject):

enter image description here

使用com.alibaba.fastjson.JSONObject的原始响应
enter image description here

如果将JSONObject更改为String,则仅返回错误的String版本:(:
enter image description here

最佳答案

服务器需要JSON正文请求。您正在使用@Field注释数据,这将导致请求形成为queryString。

即您的请求正文将如下所示:

description=foo&price=123...

代替这个:
{
"description": "foo",
"price": 123,
...
}

要实现所需的功能,请检查 this question here。第一个答案直接用于Java对象,但是如果您不想使用自定义类,也可以使用第二个答案。

关于kotlin - JSON解析错误:使用RoyalPay SDK时语法错误,期望{,实际错误,pos 0,fastjson版本1.2.57,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55913715/

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