能否对List<String>使用jsonStringify()?请求JSON体格式异常问题
解决方案:用JSON序列化库替代手动拼接字符串
你遇到的问题是手动拼接JSON字符串时,列表元素没有被正确添加引号,导致JSON格式无效。不推荐手动处理引号的方案,更可靠的做法是使用正规的JSON序列化库来构建请求体,避免手动拼接的各种潜在问题。
方法一:使用Jackson序列化库
首先定义对应请求体的数据类:
data class RequestBody( val id: String, val items: List<String>? )
然后在构建请求体时,直接序列化这个数据类:
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.writeValueAsString // 构建请求体部分 .body(StringBody( jacksonObjectMapper().writeValueAsString( RequestBody( id = session.getString("id") ?: "unknown", items = session.get<List<String>>("items") ) ) ))
方法二:使用kotlinx.serialization序列化库
同样先定义可序列化的数据类:
import kotlinx.serialization.Serializable @Serializable data class RequestBody( val id: String, val items: List<String>? )
然后进行序列化:
import kotlinx.serialization.json.Json // 构建请求体部分 .body(StringBody( Json.encodeToString( RequestBody( id = session.getString("id") ?: "unknown", items = session.get<List<String>>("items") ) ) ))
为什么不推荐手动拼接?
手动拼接JSON字符串很容易因为元素包含特殊字符(比如引号、反斜杠)导致JSON格式错误,而序列化库会自动处理这些转义逻辑,同时代码可读性和可维护性更高。
内容的提问来源于stack exchange,提问作者Dmitrii Trifonov
相关产品推荐
相关产品推荐

