Sobes.tech
Junior

Чӣ гуна бо JSON дар Kotlin кор кардан мумкин аст?

sobes.tech AI

Ҷавоб аз AI

Дар Kotlin, кор бо JSON одатан бо истифода аз китобхонаҳои тарафи сеюм анҷом дода мешавад. Беҳтаринҳо:

  1. Jackson: Қувватманд ва чандир.
  2. Gson: Осон дар истифода, аз Google.
  3. kotlinx.serialization: Сериализатсия/десериализатсияи маҳаллӣ барои Kotlin.

Маслиҳат барои истифодаи kotlinx.serialization:

  1. Ба build.gradle.kts вобастагиро илова кунед:

    // build.gradle.kts
    plugins {
        kotlin("jvm") version "1.9.22"
        kotlin("plugin.serialization") version "1.9.22"
    }
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0")
    }
    
  2. Барои моделсозии сохтори JSON, класс data эҷод кунед:

    // Data class барои десериализатсияи JSON
    import kotlinx.serialization.Serializable
    
    @Serializable // Анотация барои сериализатсия/десериализатсия
    data class User(
        val name: String,
        val age: Int
    )
    
  3. Сатрии JSON-ро ба объект десериализатсия кунед:

    // Десериализатсияи сатрии JSON
    import kotlinx.serialization.json.Json
    
    val jsonString = """{"name":"Alice","age":30}"""
    val user = Json.decodeFromString<User>(jsonString)
    
    // user.name хоҳад буд "Alice", user.age хоҳад буд 30
    
  4. Объектро ба сатрии JSON сериализатсия кунед:

    // Сериализатсия кардани объект ба сатрии JSON
    import kotlinx.serialization.json.Json
    
    val userToSerialize = User("Bob", 25)
    val jsonOutput = Json.encodeToString(userToSerialize)
    
    // jsonOutput хоҳад буд {"name":"Bob","age":25}
    

Интихоби китобхона вобаста ба талаботи лоиҳа KMP (Kotlin Multiplatform), самаранокӣ ва осонии истифода мебошад. kotlinx.serialization барои лоиҳаҳои KMP интихоби беҳтарин аст, зеро он маҳаллӣ мебошад.