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

如何格式化输出kotlinx JsonElement?无对应数据类时的实现方法

Kotlinx JsonObject 格式化输出(Pretty-Print)方案

你遇到的核心问题是:直接调用JsonObject.toString()不会生成格式化的JSON字符串,且kotlinx序列化默认的格式化方法不需要依赖数据类,直接针对JsonElement处理即可。另外你的代码里还有两个小问题:

  • 变量名错误:jsonObject应该是传入的参数json
  • JsonObject.plus()方法要求值是JsonElement类型,直接传1.1会报错,需要用JsonPrimitive(1.1)包装

正确的实现代码

import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.JsonPrimitive
import kotlinx.serialization.json.JsonElement

fun print(json: JsonObject): String {
    // 修正变量名,并用JsonPrimitive包装数值
    val withVersion = json + ("Version" to JsonPrimitive(1.1))
    // 创建支持格式化输出的Json实例
    val prettyJson = Json {
        prettyPrint = true
        prettyPrintIndent = "  " // 可选,指定缩进字符,默认是4个空格
    }
    // 直接序列化JsonElement对象,无需数据类
    return prettyJson.encodeToString(JsonElement.serializer(), withVersion)
}

关键说明

  • Json { prettyPrint = true }:开启格式化输出配置,会自动添加换行和缩进
  • JsonElement.serializer():kotlinx序列化提供了针对JsonElement的序列化器,不需要自定义数据类就能直接序列化
  • JsonObject.plus():该方法返回新的JsonObject,不会修改原对象,符合不可变设计

内容的提问来源于stack exchange,提问作者ModdyFire

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:42:38