Kotlin:
การทำงานกับ YAML

วิธีการ:

Kotlin ไม่มีการสนับสนุน YAML การแยกวิเคราะห์และการซีเรียลไลส์เข้ามาในตัว แต่คุณสามารถใช้ไลบรารีของบุคคลที่สามที่นิยมเช่น snakeyaml (สำหรับการแยกวิเคราะห์ YAML ทั่วไป) และ kotlinx.serialization (กับส่วนขยายรูปแบบ YAML) เพื่อทำงานกับไฟล์ YAML

ใช้งาน snakeyaml

การพึ่งพา:

implementation 'org.yaml:snakeyaml:1.30'

อ่าน YAML:

import org.yaml.snakeyaml.Yaml
import java.io.FileInputStream

fun readYaml(filePath: String) {
    val yaml = Yaml()
    val inputStream = FileInputStream(filePath)
    val data = yaml.load<Map<String, Any>>(inputStream)

    println(data)
}

// การใช้งานตัวอย่าง
fun main() {
    readYaml("config.yaml")
}

ตัวอย่าง config.yaml:

database:
  host: localhost
  port: 5432

ตัวอย่างเอาต์พุต:

{database={host=localhost, port=5432}}

ใช้งาน kotlinx.serialization กับ YAML

ขั้นแรก, ตรวจสอบว่าคุณมีไลบรารี kotlinx-serialization กับไลบรารีที่รองรับ YAML ที่เหมาะสม (หากมี, เนื่องจาก kotlinx.serialization กำหนดเป้าหมายหลักเป็น JSON และรูปแบบอื่นๆ โดยตรง)

การพึ่งพา:

// สำหรับ JSON (เพื่อการอธิบาย, ตรวจสอบรองรับ YAML หรือไลบรารีอื่นๆ)
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2'

กำหนดคลาสข้อมูลที่สามารถซีเรียลไลส์ได้:

import kotlinx.serialization.Serializable

@Serializable
data class Config(
    val database: Database
)

@Serializable
data class Database(
    val host: String,
    val port: Int
)

น่าเสียดาย, ณ เวลาที่เขียน, การสนับสนุน YAML โดยตรงใน kotlinx.serialization อาจจะจำกัดหรือกำลังพัฒนาอยู่ คุณอาจจำเป็นต้องใช้การแทนที่โดยการแปลง YAML เป็น JSON ด้วย snakeyaml และจากนั้นจึงแยกวิเคราะห์ JSON ด้วย kotlinx.serialization หรือมองหาโปรเจ็กต์ซีเรียลไลส์ YAML ที่นำมาโดยชุมชนและเข้ากันได้กับ kotlinx.serialization

สำหรับ JSON, โค้ดจะมีลักษณะดังนี้:

import kotlinx.serialization.json.Json
import kotlinx.serialization.decodeFromString

fun main() {
    val jsonText = """
    {
        "database": {
            "host": "localhost",
            "port": 5432
        }
    }
    """.trimIndent()
    
    val config = Json.decodeFromString<Config>(jsonText)
    println(config)
}

ในขณะที่ Kotlin และระบบนิเวศของมันยังคงพัฒนาต่อไป, คอยติดตามเอกสารการใช้งานอย่างเป็นทางการและทรัพยากรชุมชนสำหรับข่าวสารล่าสุดเกี่ยวกับการรองรับ YAML และไลบรารีที่เกี่ยวข้อง