Koji se okviri obično koriste za obradu JSON u Kotlinu?
sobes.tech АИ
Одговор од АИ
На Kotlin обично се користе следећи фрејмворци за обраду JSON:
-
Kotlin Serialization: Нативна библиотека од JetBrains, интегрише се са компајлером. Подржава различите формате, укључујући JSON, ProtoBuf, CBOR. Захтева анотацију класа података.
import kotlinx.serialization.* import kotlinx.serialization.json.* @Serializable // Анотација data class User(val name: String, val age: Int) fun main() { val user = User("Alice", 30) val jsonString = Json.encodeToString(user) // Серијализација println(jsonString) // Испис: {"name":"Alice","age":30} val decodedUser = Json.decodeFromString<User>(jsonString) // Десеријализација println(decodedUser) // Испис: User(name=Alice, age=30) } -
Jackson: Моћан и зрели фрејмворк са широким могућностима конфигурације и подршком за различите формате података. Широко се користи у Java-екосистему.
import com.fasterxml.jackson.databind.ObjectMapper data class User(val name: String, val age: Int) fun main() { val mapper = ObjectMapper() val user = User("Alice", 30) val jsonString = mapper.writeValueAsString(user) // Серијализација println(jsonString) // Испис: {"name":"Alice","age":30} val decodedUser = mapper.readValue(jsonString, User::class.java) // Десеријализација println(decodedUser) // Испис: User(name=Alice, age=30) } -
Gson: Још један популаран фрејмворк од Google. Једноставан за коришћење, погодан за већину задатака.
import com.google.gson.Gson data class User(val name: String, val age: Int) fun main() { val gson = Gson() val user = User("Alice", 30) val jsonString = gson.toJson(user) // Серијализација println(jsonString) // Испис: {"name":"Alice","age":30} val decodedUser = gson.fromJson(jsonString, User::class.java) // Десеријализација println(decodedUser) // Испис: User(name=Alice, age=30) }
Избор фрејмворка зависи од пројекта и преференција. Kotlin Serialization често је преферирани избор у чистим Kotlin пројектима због нативне интеграције. Jackson и Gson су добри избори ако се већ користе у пројекту или је потребан широк спектар функција и флексибилност конфигурације.