본문으로 건너뛰기
AZ Tools

INI ↔ JSON 변환

INI 스타일 설정 파일 ↔ JSON 왕복 변환 — 섹션·점 표기 중첩·주석·값 타입 추론 지원.

출력

[server.tls] 같은 점 섹션 이름은 중첩 객체가 됨. 따옴표 값은 문자열 유지; 따옴표 없는 숫자/불/null은 추론.

사용법

  1. 방향 선택(INI → JSON 또는 JSON → INI).
  2. 왼쪽에 설정 붙여넣기.
  3. 오른쪽 결과 복사. 방향 전환 시 현재 출력이 입력으로 이동.

자세한 설명

펼치기

양방향 변환을 지원합니다. INI를 읽을 때는 섹션 단위로 훑으면서 [db.primary] 같은 점 표기 섹션명을 중첩 객체로 바꾸고, 따옴표로 감싼 문자열은 적힌 그대로 유지하며, 따옴표 없는 값에서 true·false·null·정수·실수를 추론합니다. 들여쓴 이어지는 줄은 configparser가 읽는 방식대로 바로 위 값에 이어 붙입니다. INI를 쓸 때는 최상위 스칼라를 섹션 없는 머리 부분으로 먼저 내보내고, 중첩 객체를 각각 [섹션]으로 만들며, 더 깊은 단계는 점 표기로 펼칩니다.

INI에는 표준 규격이 없고, 이 형식에서 벌어지는 모든 놀라움의 뿌리가 거기에 있습니다. 이 파서는 첫 번째 =만 기준으로 자르므로, 파이썬 configparser가 함께 허용하는 key: value 방언은 여기서 인식되지 않습니다. ;와 #으로 시작하는 주석은 읽기는 하되 버립니다. 출력으로 옮겨지지 않으므로 이 도구를 한 바퀴 돌리면 설정 파일에서 설명이 사라집니다. 같은 섹션의 중복 키는 마지막 값이 이기고, 이미 있는 스칼라와 이름이 겹치는 섹션은 그 스칼라를 밀어냅니다.

타입 추론은 편리하지만 가끔 정보를 잃으므로 어디서 잃는지 알아 둘 만합니다. 1.20으로 적은 버전은 숫자 1.2가 되면서 뒤의 0을 잃습니다. 007 같은 앞자리 0이 붙은 값은 7이 됩니다. 자바스크립트가 정확히 담을 수 없을 만큼 큰 정수는 조용히 반올림되는 대신 문자열로 남습니다. 이 도구가 추측을 거부하는 유일한 지점입니다. 점이 두 개이거나 앞에 +가 붙었거나 0x 접두사가 있는 값은 문자열로 남으므로 1.2.3과 +82101234567은 그대로 살아남습니다. 값을 반드시 문자열로 두어야 한다면 따옴표로 감싸세요.

JSON에는 배열이 있고 INI에는 없습니다. 어떤 관례로도 이 간극은 메워지지 않습니다. 배열 값은 JSON 표기 그대로 한 줄에 기록됩니다. 읽기 쉽고 안정적이지만 배열로 되돌아오지는 않습니다. 그 파일을 다시 읽으면 ["a","b"]라는 문자열이 나옵니다. 여러 줄 문자열은 왕복이 됩니다. configparser가 쓰는 방식대로 첫 줄은 = 뒤에, 나머지는 들여쓰기해서 기록합니다. 데이터가 정말로 목록이 섞인 트리 구조라면 INI는 잘못된 도착지이고, 변환 결과가 바로 그 사실을 알려 주고 있는 것입니다.

자주 묻는 질문

따옴표 없는 값이 왜 숫자로 바뀜?

INI는 네이티브 타입이 없어 파서가 추론: 정수·실수·true/false·null 모두 변환. "..."로 감싸면 문자열 유지.

INI로 돌아갈 때 주석 보존?

안 됨. JSON은 주석 문법이 없어 입력 시 모두 드롭. 내보낸 뒤 손으로 추가.

INI에 같은 키가 두 번 있는데 값 하나가 사라졌다. 왜?

JSON 객체는 같은 키를 두 개 가질 수 없어서 변환은 하나를 골라야 하고, 여기서는 마지막 것이 이긴다. 어떤 INI 방언은 목록을 표현하려고 일부러 키를 반복하는데, 그런 구역은 손으로 배열로 바꿔야 한다. 반복이 목록을 뜻하는지 실수인지는 INI 텍스트 어디에도 적혀 있지 않기 때문이다.

어떤 INI 방언을 따르나?

INI에는 표준이 없고 관례만 있다. 이 도구는 흔한 윈도우 방식을 따른다. [구역] 머리글, 키=값, 세미콜론이나 해시 주석, 그리고 중첩을 위한 점 찍힌 구역 이름이다. 콜론으로 구분하거나, 들여쓰기로 구조를 표현하거나, 값이 여러 줄에 걸치는 방언은 그대로 왕복되지 않는다.

관련 도구