android:以field1=value1&field2=value2格式解析api响应

xqnpmsa8  于 2021-09-29  发布在  Java
关注(0)|答案(2)|浏览(244)

我使用非json格式调用的api。我的回答是这样的。

field1=value1&field2=value2&field3=value3

这种格式叫什么?它看起来与您通常在查询中发送的内容完全相同。我想用改型来解析这个响应。
有什么想法吗?非常感谢。

nqwrtyyt

nqwrtyyt1#

它被称为 query . 只有 value 部分是您需要配置。

@GET("link/anything")
suspend fun getTripDetail(
    @Query("value1") value1: String,
    @Query("value2") value2: String,
    @Query("value3") value3: String,
): Response<TripDetailResponse>
disho6za

disho6za2#

下面是一个扩展函数,用于将其解析为Map。在那之后,你很容易就可以通过做这些事情来抓住这些领域 map["field1] 例如

fun String.parseQueryFormat() : Map<String, String>{
    val queryPairs: MutableMap<String, String> = LinkedHashMap()
    val pairs = this.split("&").toTypedArray()
    for (pair in pairs) {
        val idx = pair.indexOf("=")
        queryPairs[URLDecoder.decode(pair.substring(0, idx), "UTF-8")] = URLDecoder.decode(pair.substring(idx + 1), "UTF-8")
    }
    return queryPairs
}

.

val responseString = responseBody.string()
val map = responseString.parseQueryFormat()
val field1 = map["field1"]
val field2 = map["field2"]

相关问题