본문으로 건너뛰기
AZ Tools

쿼리 문자열 ↔ JSON 변환기

URL 쿼리 문자열을 JSON 객체로, 그리고 그 반대로 변환합니다. 브라우저에서 동작합니다.

출력

사용법

  1. 방향을 선택합니다: 쿼리 문자열 → JSON 또는 JSON → 쿼리 문자열.
  2. 쿼리 문자열(앞의 ? 포함 여부 무관) 또는 JSON 객체를 붙여넣습니다.
  3. 출력 상자에서 변환된 결과를 복사합니다.

자세한 설명

펼치기

쿼리 문자열이나 URL 전체를 붙여넣으면 값이 퍼센트 디코딩되고 반복되는 키가 배열로 모인 깔끔한 JSON 객체가 나옵니다. 방향을 바꾸면 JSON 객체를 다시 인코딩된 쿼리 문자열로 만들 수 있습니다. 파싱에는 브라우저 자체의 URLSearchParams를 쓰므로 서버의 URL 계층과 똑같이 동작합니다. 더하기 기호는 공백으로 디코딩되고, 반대로 내보낼 때 공백은 다시 더하기 기호로 인코딩됩니다. 한 가지 기대치를 맞춰 두자면, 대괄호 문법은 해석하지 않습니다. items[]라고 쓴 키는 문자 그대로 items[]로 남고, items[0][name]도 하나의 긴 키로 남습니다. PHP·레일즈·qs가 쓰는 중첩 관례는 URL 표준의 일부가 아니라 프레임워크의 습관이기 때문입니다. 모든 처리는 로컬에서 이루어지며 아무것도 업로드되지 않습니다.

자주 묻는 질문

반복된 키는 어떻게 처리되나요?

같은 키가 두 번 이상 나타나면(예: tags=a&tags=b) JSON 배열이 됩니다. 한 번만 나타나는 키는 일반 문자열로 유지됩니다.

전체 URL을 붙여넣어도 되나요?

예. ?까지(포함) 모두 무시되고 #프래그먼트는 제거되므로, 전체 URL을 붙여넣어도 쿼리 매개변수만 얻을 수 있습니다.

중첩 객체는 쿼리 문자열로 어떻게 변환되나요?

배열은 반복 키로 확장됩니다. 중첩 객체나 객체 배열은 JSON으로 직렬화되어 값으로 퍼센트 인코딩됩니다. 쿼리 문자열은 평면적인 키-값 쌍이기 때문입니다.

제 데이터가 어딘가로 전송되나요?

아니요. 변환은 전적으로 브라우저에서 이루어지며 아무것도 업로드되지 않습니다.

제 키가 왜 배열이 되지 않고 items[] 그대로인가요?

대괄호 문법은 URL 표준의 일부가 아니라 프레임워크의 관례이기 때문입니다. PHP, 레일즈, qs 라이브러리는 items[]나 user[name]을 구조로 읽지만, 순수한 URL 파서에게는 문자 그대로의 키 하나일 뿐입니다. 대신 같은 키를 반복하세요. items=1&items=2로 쓰면 여기서도, 거의 모든 곳에서도 배열이 됩니다.

공백은 %20이어야 하나요, 더하기 기호여야 하나요?

쿼리 문자열에서는 둘 다 공백으로 디코딩되므로, 여기서는 둘 다 받아들이고 더하기 형태로 내보냅니다. 경로 세그먼트에서는 서로 바꿔 쓸 수 없습니다. %20은 공백이고 더하기 기호는 문자 그대로의 더하기입니다. 파일 이름 중간에 엉뚱한 더하기가 끼어 도착하는 흔한 원인이 이 차이입니다.

관련 도구