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 และไลบรารีที่เกี่ยวข้อง