Android: 解析 API field1=value1&field2=value2 格式的响应

Android: Parse API response in field1=value1&field2=value2 format

一个 API 我正在使用非 json 格式呼叫。在响应中,我得到了这样的东西。

field1=value1&field2=value2&field3=value3

这种格式叫什么?它看起来与您通常在查询中发送的内容完全一样。我想使用 Retrofit 解析此响应。

有什么想法吗?谢谢。

叫做query。只有 value 部分需要配置。

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

这是一个扩展函数,可以将其解析为地图。之后很容易通过 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"]