You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否对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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 03:08:13