Language/Kotlin

2021 - 05 - 12, Kotlin

Cs.Woo 2021. 5. 13. 02:49
fun testArticleFromJson(jsonStr: String): TestArticle {
    val jsonMap = mapFromJson(jsonStr)

    val id = jsonMap["id"].toString().toInt()
    val title = jsonMap["title"].toString()
    val body = jsonMap["body"].toString()

    return TestArticle(id, title, body)
}

fun mapFromJson(jsonStr: String): Map<String, Any> {
    val map = mutableMapOf<String, Any>()

    var jsonStr = jsonStr.drop(1)
    jsonStr = jsonStr.dropLast(1)

    val jsonItems = jsonStr.split(",\r\n")

    for (jsonItem in jsonItems) {
        val jsonItemBits = jsonItem.trim().split(":", limit = 2)

        val key = jsonItemBits[0].trim().drop(1).dropLast(1)
        var value = jsonItemBits[1].trim()

        when {
            value == "true" -> {
                map[key] = true
            }
            value == "false" -> {
                map[key] = false
            }
            value.startsWith("\"") -> {
                map[key] = value.drop(1).dropLast(1)
            }
            value.contains(".") -> {
                map[key] = value.toDouble()
            }
            else -> {
                map[key] = value.toInt()
            }
        }
    }

    return map.toMap()
}

 코틀린으로 JSON 파일 객체로 파싱하는법