Skip to content

Instantly share code, notes, and snippets.

@hikaMaeng
Created September 19, 2025 02:06
Show Gist options
  • Select an option

  • Save hikaMaeng/0bfcd51bd5631d38e80bb463b3772c40 to your computer and use it in GitHub Desktop.

Select an option

Save hikaMaeng/0bfcd51bd5631d38e80bb463b3772c40 to your computer and use it in GitHub Desktop.
fun jsonParser1(){
val json = """{"a":1, "b":"abc", "c":true, "d":null}"""
val map:HashMap<String, Any?> = hashMapOf()
map["a"] = 1
map["b"] = "abc"
map["c"] = true
map["d"] = null
//map을 하나의 문자열로 바꾼다
var result:String = "{"
var isFirst = true
for(entry in map){
if(isFirst) isFirst = false else result += ", "
result += """"${entry.key}":"""
if(entry.value is String) result += """"${entry.value}"""" else result += "${entry.value}"
}
result += "}"
// file로 만들어서 저장한다
val file = java.io.File("save.txt")
file.writeText(result)
}
import java.io.File
fun jsonParser2(){
val json = """{"a":1, "b":"abc", "c":true, "d":[1,2,3], "e":{"x":1, "y":"abc"}}"""
val map:HashMap<String, Any?> = hashMapOf()
map["a"] = 1
map["b"] = "abc"
map["c"] = true
map["d"] = listOf(mapOf("x" to 1, "y" to "abc"), listOf(1,2,3),3)
map["e"] = mapOf("x" to 1, "y" to "abc", "c" to listOf(1,2,3))
var homework = hashMapOf<String, Any?>(
"target" to map,
"previous" to null
)
var result:String = ""
var limit:Int = 10
while(limit-- > 0){
result += when(val v = homework["target"]){
is String->""""$v""""
is List<*>->{
var str = if(homework["isFirst"] == null) "[" else ""
var isFirst = if(homework["isFirst"] == null) true.also{homework["isFirst"] = false} else false
val iter =
(homework["iter"] as? MutableIterator<Any?>) ?: v.iterator().also { homework["iter"] = it }
var isBreak = false
while(iter.hasNext()){
val v: Any? = iter.next()
if(isFirst) isFirst = false else str += ", "
str += when(v){
is String->""""$v""""
is Map<*,*>, is List<*>-> {
val newWork = hashMapOf<String, Any?>(
"target" to v,
"previous" to homework
)
homework = newWork
isBreak = true
break
}
else->"$v"
}
}
str + if(!isBreak){
homework = homework["previous"] as? HashMap<String, Any?> ?: break
"]"
} else ""
}
is Map<*,*>->{
var str = if(homework["isFirst"] == null) "{" else ""
var isFirst = if(homework["isFirst"] == null) true.also{homework["isFirst"] = false} else false
val iter =
(homework["iter"] as? MutableIterator<MutableMap.MutableEntry<String, Any?>>) ?: v.iterator().also { homework["iter"] = it }
var isBreak = false
while(iter.hasNext()){
val entry = iter.next()
if(isFirst) isFirst = false else str += ", "
str += """"${entry.key}":"""
str += when(val v = entry.value){
is String->""""$v""""
is Map<*,*>, is List<*>-> {
val newWork = hashMapOf<String, Any?>(
"target" to v,
"previous" to homework
)
homework = newWork
isBreak = true
break
}
else->"$v"
}
}
str + if(!isBreak) {
homework = homework["previous"] as? HashMap<String, Any?> ?: break
"}"
}else ""
}
else->"$v"
}
println(result)
}
result += "}"
// file로 만들어서 저장한다
val file = File("save.txt")
file.writeText(result)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment