it-box

쿼리 문자열 ↔ JSON

URL 쿼리 문자열과 문자열 기반 JSON 객체를 변환하고 반복 키를 보존합니다.

쿼리 문자열 ↔ JSON 도구 열기

쿼리 스트링(a=1&b=2)을 JSON 객체로 바꾸거나, 반대로 JSON 객체를 쿼리 스트링으로 바꿉니다. 같은 키가 여러 번 나오면 배열로 함께 묶어 보여 줍니다.

사용 순서

  1. 방향 선택 목록에서 쿼리 스트링을 JSON으로 바꿀지, JSON을 쿼리 스트링으로 바꿀지 고릅니다.
  2. 입력란에 쿼리 스트링을 붙여 넣습니다. 앞에 ?가 있어도 자동으로 제거됩니다.
  3. 결과 영역의 JSON을 확인하고 복사 버튼으로 가져갑니다.
  4. 반대 방향으로 바꿀 때는 값이 문자열이거나 문자열 배열인 JSON 객체를 입력합니다.

예시

?tag=one&tag=two&message=hello+world&number=003 을 입력하면 {"tag":["one","two"],"message":"hello world","number":"003"} 이 출력됩니다.

한계

같은 키가 한 번만 나오면 문자열, 여러 번 나오면 배열이 되어 값의 개수에 따라 결과 타입이 달라집니다. JSON을 쿼리 스트링으로 바꿀 때는 숫자, 불리언, null, 중첩 객체를 허용하지 않아 오류가 납니다. 입력은 2MB까지 처리합니다.

보안 주의

OAuth 콜백 URL이나 로그인 리다이렉트 주소에는 code, access_token 같은 일회성 값이 들어 있습니다. 결과를 이슈 트래커나 채팅에 붙이기 전에 해당 값을 지우거나 가려 주세요.

배경 지식

쿼리 스트링은 URL의 물음표(?) 뒤에서 샤프(#) 앞까지 이어지는 부분이며, 키와 값을 등호(=)로 묶고 쌍을 앰퍼샌드(&)로 나눕니다. 공백은 +나 %20으로, 그 밖의 특수문자는 퍼센트 인코딩(%XX)으로 표현합니다. 같은 키를 여러 번 쓰는 것은 규격이 막지 않으므로 목록 파라미터를 전달하는 방법으로 널리 쓰입니다.

JSON 객체는 키마다 값을 하나씩 두는 구조라서 같은 키를 여러 번 표현하기 어렵습니다. 이 도구는 중복 키를 배열로 모으고, 한 번만 나온 값은 문자열로 남겨 둡니다. 그래서 API 문서에서 목록 파라미터와 단일 파라미터를 구분해 받는지 확인해야 합니다. 쿼리 스트링의 값은 모두 문자열이므로 003처럼 앞자리 0이 있는 값도 그대로 보존됩니다.

자주 묻는 질문

쿼리 스트링에서 배열 파라미터를 표현하는 방법은 하나인가요?

하나로 정해진 규칙은 없습니다. tag=one&tag=two처럼 같은 키를 반복하는 방식, tag[]=one&tag[]=two처럼 대괄호를 붙이는 방식, 쉼표로 묶는 방식이 모두 쓰입니다. 이 도구는 반복 방식만 배열로 묶으므로 대괄호가 붙은 키는 그 이름 그대로 키가 됩니다.

+와 %20은 결과에서 어떻게 처리되나요?

둘 다 공백으로 해석되어 hello world가 됩니다. 반대로 JSON에서 쿼리 스트링으로 바꾸면 공백은 +로 인코딩됩니다. 쿼리 안의 +는 공백이라는 점을 알고 있으면 디버깅할 때 혼동이 줄어듭니다.

결과 JSON의 키 순서는 원본과 같나요?

처음 등장한 순서를 따르지만, 키 이름이 숫자로만 된 경우에는 JavaScript 객체가 숫자 키를 먼저 오름차순으로 정렬합니다. 그래서 원래 순서와 다르게 보일 수 있습니다.