一番簡単に作る方法はどれなのか、と思いましたので。
サードパーティーは使わず、
すべて kotlinx.serialization で。
以下の JsonObject を作ります。
{
  "model": "gpt-3.5-turbo",
  "messages": [
    {
      "role": "user",
      "content": "Server-Sent Events とは"
    }
  ],
  "temperature": 0.7,
  "stream": false
}
👨🎨 文字列から作る
文字列内に JSON を記述しておいて変換します。
val str = """{
  |  "model": "gpt-3.5-turbo",
  |  "messages": [{"role":"user","content":"Server-Sent Events とは"}],
  |  "temperature": 0.7,
  |  "stream": false
  |}""".trimMargin()
val element = Json.parseToJsonElement(str)
println(element)
println(element.javaClass.simpleName)
// {"model":"gpt-3.5-turbo","messages":[{"role":"user","content":"Server-Sent Events とは"}],"temperature":0.7,"stream":false}
// JsonObject
👨🎨 データクラスから作る
データクラスを先に作っておきます。
@Serializable
data class ChatRequest(
  val model: String,
  val messages: List<Message>,
  val temperature: Double,
  val stream: Boolean
)
@Serializable
data class Message(
  val role: String,
  val content: String
)
値をセットして変換します。
val data = ChatRequest(
  model = "gpt-3.5-turbo",
  messages = listOf(Message(role = "user", content = "Server-Sent Events とは")),
  temperature = 0.7,
  stream = false
)
val element = Json.encodeToJsonElement(data)
println(element)
println(element.javaClass.simpleName)
// {"model":"gpt-3.5-turbo","messages":[{"role":"user","content":"Server-Sent Events とは"}],"temperature":0.7,"stream":false}
// JsonObject
👨🎨 Json エレメントビルダー で作る
ビルダー関数 buildJsonArray(), buildJsonObject() を使いながら DSL 形式で JSON の構造を定義していきます。
val element = buildJsonObject {
  put("model", "gpt-3.5-turbo")
  putJsonArray("messages") {
    addJsonObject {
      put("role", "user")
      put("content", "Server-Sent Events とは")
    }
  }
  put("temperature", 0.7)
  put("stream", false)
}
println(element)
println(element.javaClass.simpleName)
// {"model":"gpt-3.5-turbo","messages":[{"role":"user","content":"Server-Sent Events とは"}],"temperature":0.7,"stream":false}
// JsonObject
👉 json-element-builders kotlinx.serialization/json.md at master · Kotlin/kotlinx.serialization 
👨🎨 まとめ
文字列から作成する方法が直接的で簡単に書けますね!
テストコードで見かけることも多いように思います。
👉 kotlinx.serialization/json.md at master · Kotlin/kotlinx.serialization · GitHub 
【Kotlin】kotlinx.serialization で JSON を自在に変換する 🤔 https://t.co/sqTQUBkzBu #プログラミング #kotlin #Json
— chanzmao (@maochanz) June 12, 2023
 




