Kotlin - QueryString 파싱하기

김호머·2020년 3월 18일
0

Kotlin 안드로이드 프로젝트에서 QueryString을 파싱하려면 어떻게 해야 할까?

가장 기본적인 방법은 android.net.urigetQueryParameter 메서드를 사용하는건데, 해당 방법은 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")
profile
프런트엔드 개발자, 김호머입니다.

0개의 댓글