PHP 직렬화 ⇄ JSON 변환기
PHP serialize() 출력을 들여쓴 JSON으로, JSON을 다시 직렬화 문자열로 변환합니다 — 모든 스칼라 값과, 키에 따라 JSON 배열 또는 객체가 되는 배열까지 처리합니다.
34자 · UTF-8로 44바이트
결과 4줄, 28자{
"0": 42,
"이름": "김민준"
}PHP serialize() 출력을 JSON으로, 그리고 반대로
PHP serialize()의 출력을 붙여넣으면 깔끔하게 들여쓴 JSON이 나오고, 방향을 바꾸면 JSON을 PHP 직렬화 문자열로 되돌립니다. 파서는 PHP가 내보내는 모든 스칼라(N 널, b 불리언, i 정수, d 실수, s 문자열)와 임의 깊이로 중첩된 a 배열을 읽습니다. 키가 정확히 0,1,2…인 배열은 JSON 배열이 되고, 그 외의 배열은 JSON 객체가 됩니다. JSON을 다시 직렬화할 때 숫자처럼 보이는 객체 키는 PHP와 똑같이 정수 키가 됩니다. 값이 배열이나 객체라면 보기 메뉴에서 http_build_query도 고를 수 있어, PHP가 같은 값으로 만드는 쿼리 문자열을 보여 줍니다 — null은 빼고, true와 false는 1과 0으로, 중첩된 키는 인코딩된 대괄호로 쓰며, 객체는 public 속성만 읽습니다. 입력 칸 아래 한 줄은 글자 수와 UTF-8 바이트 수를 나란히 세어 주는데, s:N의 N이 바이트 수이기 때문입니다. 모든 처리는 브라우저에서 이뤄지므로 직렬화된 세션 데이터가 기기를 벗어나지 않습니다.
직렬화 데이터를 확인하는 이유
PHP는 디버깅하게 되는 여러 곳에 직렬화된 값을 저장합니다. $_SESSION 파일, 로그인 유지 쿠키와 프레임워크 쿠키, 워드프레스의 wp_options 테이블, 라라벨·심포니 캐시, 큐 작업 페이로드 등입니다. a:2:{s:4:"name";s:3:"Ada";i:0;i:42;} 같은 원본 문자열은 한눈에 읽기 어렵습니다. JSON으로 바꾸면 구조가 즉시 보이고, JSON을 되돌리면 직렬화 값을 직접 만들거나 수정할 수 있습니다. s:N:"…"의 길이는 바이트 단위이고 내용은 이스케이프되지 않으므로, 이 도구는 따옴표나 멀티바이트 UTF-8이 든 문자열도 정확히 읽습니다.
자주 묻는 질문
PHP serialize() 형식이 무엇인가요?
PHP가 값을 문자열로 저장할 때 쓰는 간결한 텍스트 형식입니다. 예: a:2:{s:4:"name";s:3:"Ada";i:0;i:42;}. 각 조각은 타입(문자열 s, 정수 i, 배열 a 등)과 길이·개수로 표시되어 unserialize()로 정확히 복원됩니다.
PHP 배열은 JSON으로 어떻게 변환되나요?
키가 0,1,2…로 연속된 배열은 JSON 배열이 되고, 그 외(문자열 키나 번호에 빈틈이 있는 경우)는 JSON 객체가 됩니다. 되돌릴 때 정수처럼 보이는 객체 키는 정수 배열 키로 변환되어 PHP 동작과 일치합니다.
직렬화된 객체도 읽고, PHP가 출력하는 모양으로 볼 수 있나요?
네. 직렬화된 객체를 읽고 protected·private 속성 이름도 풀어 주며, 보기 메뉴에서 JSON, print_r, var_dump, var_export 중 하나로 보여 줍니다.
구조를 트리로 접었다 펼치거나 값마다 PHP 타입을 볼 수 있나요?
네. 보기 메뉴에서 ‘트리’를 고르면 역직렬화한 값을 접고 펼 수 있는 트리로 그립니다. 배열과 객체는 저마다 접히는 항목이 되어 var_dump처럼 PHP 타입과 원소 개수를 이름에 달고, 바깥쪽 단계는 펼친 채로, 더 깊은 단계는 눌러야 열립니다. 값 하나하나에도 타입이 붙으므로 JSON에서는 그냥 숫자로 보이는 실수도 float로 드러납니다. var_dump 보기는 같은 타입과 개수를 텍스트로 보여 줍니다. 트리 보기에서도 복사와 다운로드에는 값 전체가 JSON으로 담깁니다.
PHP가 만드는 쿼리 문자열을 보거나, 문자열의 바이트 길이를 확인할 수 있나요?
네. 값이 배열이나 객체라면 보기 메뉴에 http_build_query가 나오며, PHP와 똑같이 씁니다 — urlencode() 방식으로 인코딩하고, 중첩된 키는 인코딩된 대괄호에 넣고, null은 빼고, true와 false는 1과 0으로 쓰며, 객체는 public 속성만 읽습니다. 입력 칸 아래 한 줄은 글자 수와 UTF-8 바이트 수를 나란히 세어 주는데, s:N의 N이 세는 것이 바이트이므로 한글 문자열의 N은 글자 수의 세 배쯤 됩니다.