Kotlin 안드로이드 프로젝트에서 QueryString을 파싱하려면 어떻게 해야 할까?
가장 기본적인 방법은 android.net.uri
의 getQueryParameter
메서드를 사용하는건데, 해당 방법은 Jellybean 이전 환경에선 공백이 있을 때 버그가 발생한다고 한다.
Warning: Prior to Jelly Bean, this decoded the '+' character as '+' rather than ' '.
참고 링크
만약에 Jellybean 이전 버전에 대해서 신경쓰지 않는다면 다음과 같이 구현을 하면 된다.
import android.net.Uri
...
val uri = Uri.parse("?a=1&b=2")
val a = uri.getQueryParameter("a")
val b = uri.getQueryParameter("b")
참고로 위와 같이 주소 문자열에 ?
가 있어야만 파싱을 할 수 있다. 위 코드를 Jellybean 이전 버전에서 사용하고 싶다면 '+'
를 ' '
로 모두 치환해서 사용해야 한다 참고.
android.net.Uri
말고 다른 방식으로 구현하는 방법은, 바로 UrlQuerySanitizer
를 사용하는 것이다. 이것은 모든 디바이스에서 문제없이 작동한다.
import android.net.UrlQuerySanitizer
...
val sanitizer = UrlQuerySanitizer("?a=1&b=2")
val a = sanitizer.getValue("a")
val b = sanitizer.getValue("b")