Kotlin中如何对要放入JSON字符串的字符串进行转义?
Kotlin中处理JSON字符串转义的方案
Kotlin标准库本身并没有提供专门用于JSON字符串转义的内置函数,但有两种可靠的方式解决你遇到的问题:
1. 使用官方推荐的JSON序列化库(首选)
最稳妥的方式是借助Kotlin官方的kotlinx.serialization库,它会自动处理所有JSON规范要求的字符转义,完全避免手动转义的出错风险。
示例代码:
import kotlinx.serialization.Serializable import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json // 定义需要序列化的数据类 @Serializable data class Post(val title: String, val content: String) fun main() { // 包含特殊字符的字符串 val post = Post("Hello \"World\"", "Line 1\nLine 2\tWith tab") // 自动生成合法的JSON字符串 val validJson = Json.encodeToString(post) println(validJson) // 输出:{"title":"Hello \"World\"","content":"Line 1\nLine 2\tWith tab"} }
这个库会自动处理双引号、换行符、制表符等所有需要转义的字符,确保生成的JSON格式完全有效。
2. 手动实现转义函数(不推荐)
如果不想引入第三方库,可以自己实现一个字符串扩展函数来处理JSON转义,但需要覆盖所有JSON规范要求的转义场景:
fun String.escapeForJson(): String { return this.replace("\\", "\\\\") .replace("\"", "\\\"") .replace("\n", "\\n") .replace("\r", "\\r") .replace("\t", "\\t") .replace("\b", "\\b") .replace("\f", "\\f") }
注意:手动实现容易遗漏Unicode控制字符等边缘场景,长期维护风险高,仅建议在简单场景下临时使用。
内容的提问来源于stack exchange,提问作者lannyf
相关产品推荐
相关产品推荐

