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.