왼쪽에 Lua를 붙여 넣고 "변환"을 누르세요 — JSON으로 바꿔드립니다Lua 코드 붙여 넣기

이 도구가 하는 일

게임 설정, Redis 스크립트, 또는 nginx의 OpenResty 핸들러에서 나온 Lua 테이블을 JSON으로 바꿔야 했던 적이 있다면, 여기서 붙여 넣기 한 번으로 끝납니다. 상수 하나 직렬화하자고 json.luadkjson을 설치할 필요는 없습니다.

Lua 테이블은 배열부(1부터 시작하는 정수 키)와 해시부(문자열·혼합 키)를 같은 구조에 섞어 쓰기 때문에 조금 까다롭습니다. 변환기는 그 모양을 자동으로 판별합니다. 순수 배열부 테이블은 JSON 배열로, 순수 해시부 테이블은 JSON 객체로, 혼합 테이블은 숫자 키를 문자열화한 JSON 객체로 떨어집니다. Lua 5.4 레퍼런스 매뉴얼과 널리 쓰이는 JSON 라이브러리의 동작이 이와 같습니다.

중첩 테이블은 원하는 깊이까지 내려갑니다. nilnull이 되고, true/false는 그대로 매핑되며, 숫자는 숫자로 남습니다(정수는 정수 그대로). 작은따옴표·큰따옴표·긴 괄호([[...]])로 감싼 문자열도 모두 제대로 파싱됩니다. 주석(----[[ ... ]])은 제거됩니다.

사용 방법

세 단계면 끝납니다. 작은 테이블이든 거대한 설정이든 똑같습니다.

1

Lua를 붙여 넣으세요 (또는 샘플 사용)

왼쪽 에디터에 Lua 테이블을 넣으세요. 배열부 테이블, 해시부 테이블, 중첩 테이블, 또는 여러 개의 최상위 local x = {...} 선언 — 다 괜찮습니다.

Lua 문법은 그대로 두세요. 따옴표 없는 키(name = "..."), 대괄호 키(["foo-bar"] = ...), 주석 모두 제대로 파싱됩니다.

2

변환 누르기

초록색 변환 버튼을 누르세요. 각 레벨에서 배열/해시 모양을 판별하며 테이블을 따라가 그에 맞는 JSON을 내보냅니다.

3

JSON 복사

오른쪽 패널의 들여쓰기된 JSON을 설정 파일, API 호출, 또는 테스트 픽스처에 복사해 쓰세요. 끝입니다.

이럴 때 실제로 유용합니다

게임·엔진 설정 마이그레이션

많은 엔진(Love2D, Defold, World of Warcraft 애드온)이 설정에 Lua 테이블을 씁니다. 파이프라인이 JSON 기반 도구로 옮겨갈 때 한 방에 변환할 수 있습니다.

OpenResty / Nginx 핸들러 디버깅

OpenResty 스크립트에서 응답 본문을 Lua 테이블로 만들었다면 — 여기에 붙여 넣어 재배포 전에 클라이언트가 받게 될 JSON을 확인할 수 있습니다.

Redis Lua 스크립트

Redis EVAL 스크립트가 복잡한 구조를 반환할 때, Lua 테이블 리터럴은 로그에서 쉽게 뽑을 수 있습니다. JSON으로 바꿔서 앱이 보는 값과 대조해 보세요.

다른 언어로 설정 포팅

Lua로 스크립팅된 도구를 Node나 Go로 다시 짤 때, 옛날 설정 테이블을 JSON으로 변환해 마이그레이션 포맷으로 사용하세요.

자주 묻는 질문

배열인지 객체인지는 어떻게 판단하나요?

json.lua가 쓰는 규칙과 같습니다. 테이블의 키가 1부터 시작하는 연속된 정수뿐이면 배열, 아니면 객체입니다. 혼합 테이블(1, 2, "name")은 JSON 배열에 이름 있는 키를 넣을 수 없기 때문에, 숫자 키를 문자열화한 객체로 나옵니다.

테이블 안의 nil은 어떻게 되나요?

Lua에서 nil 값은 해당 키를 제거합니다 — 변환기도 같은 규칙을 따라 nil 값 키를 출력에서 단순히 뺍니다. 최상위의 단독 nil(예: local x = nil)은 JSON null이 됩니다.

<code>[[...]]</code> 같은 긴 괄호 문자열도 지원하나요?

네. 긴 괄호 문자열([==[...]==]처럼 등호 수가 얼마든 상관없음)은 파싱해서 적절히 이스케이프된 JSON 문자열로 내보냅니다.

여러 테이블을 한꺼번에 붙여 넣어도 되나요?

네. 최상위의 local name = {...}name = {...}는 각각 출력 JSON의 키가 됩니다. 이름 없는 후행 테이블에는 숫자 키가 할당됩니다. 조용히 버려지는 것은 없습니다.

제 코드가 저장되나요?

아니요 — 변환을 위해 백엔드로 보내기만 할 뿐 저장하지 않습니다. 그래도 민감한 정보는 붙여 넣기 전에 가리시는 편이 좋습니다.

LuaRocks의 rockspec 파일도 처리하나요?

네. rockspec 파일은 본질적으로 Lua 테이블이라 깔끔하게 변환됩니다 — 의존성 메타데이터를 JSON 레지스트리 형식으로 옮길 때 편리합니다.

함께 쓰면 좋은 도구

Lua to JSON은 나머지 도구들과 궁합이 좋습니다: