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"]
一个 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"]