JSON 가공 도구
평탄화·null 제거·문자열 감싸기를 한 곳에서 해요.
이럴 때 쓰세요
이렇게 사용하세요
결과가 예상과 다를 때
결과가 잘려 보여요
전체 결과는 복사 버튼으로 받을 수 있어요.
입력한 내용이 사라졌어요
이 기기에 자동 저장돼요. 브라우저 저장소를 지우면 함께 사라져요.
자주 하는 실수
- 원래 키에 마침표가 있으면 복구할 때 경계로 잘립니다. x.y 라는 한 키가 x 와 y 로 갈라지므로 이런 키는 평탄화하지 마세요.
- 경로가 겹치면 값이 사라집니다. a.b 와 a 를 함께 넣으면 a.b 의 1이 증발하고 a 만 남아요.
- 최상위 숫자 키는 배열이 아니라 객체로 돌아옵니다. 0,1 두 키는 배열로 만들지 않아요.
- null 제거는 빈 객체까지 지우지 않습니다. 값이 null 뿐인 키는 사라지지만 빈 객체는 그대로 남습니다.
계산 근거
평탄화는 키 경로에 마침표를 구분자로 붙이는 방식이라, 마침표를 키에 담는 자료에는 어울리지 않습니다. 배열은 순서가 의미가 있어 경로에 숫자를 붙여 두면 복구할 때 배열로 되돌아갑니다. 숫자가 연속된 문자열이면 배열로 만들고 그렇지 않으면 객체로 만듭니다.
실제로 계산해 보면
'{"a":{"b":1,"c":null},"d":[1,2]}' 를 평탄화하면?
키 4개로 나뉩니다. a.b=1, a.c=null, d.0=1, d.1=2 입니다. 배열 원소 뒤에는 인덱스가 붙습니다.
그 결과를 다시 합치면 원래대로 돌아오나요?
네. 중첩은 복원되고 d 는 인덱스가 붙어 숫자 순서라 배열이 됩니다. 1과 2의 순서도 그대로예요.
'{"a":{},"b":[],"c":1}' 은요?
빈 객체와 빈 배열은 값을 잃지 않도록 그대로 남습니다. a={}, b=[], c=1 세 키가 나옵니다.
더 궁금한 것
모든 값을 문자열로 보고 평탄화해도 되나요?
문자열은 값 자리에 남고 경로에는 붙지 않습니다. 숫자 10 을 "10" 으로 바꿔도 경로가 달라지지 않으니, 표본 몇 개로 확인해 보세요.
문자열로 감싸기와 감싸기 풀기의 차이가 뭔가요?
문자열로 감싸기는 한 줄 로그에 넣을 수 있게 JSON 이스케이프를 걸고, 감싸기 풀기는 줄바꿈과 들여쓰기를 정리합니다. 뒤쪽은 문자열 형태의 JSON에는 동작하지 않아요.
평탄화한 결과를 캐시 키로 써도 되나요?
마침표로 이어진 문자열이라 사람이 읽기 어렵고, 값 자체에 마침표가 있으면 구분이 애매해집니다. 로깅용이라면 괜찮지만 캐시 키로 쓰기엔 형태가 맞지 않습니다.
알아둘 경계값
- 숫자 모양 조각이 있으면 무조건 배열로 만들어서 숫자 키를 가진 객체는 원래대로 못 돌아와요. 키 모양을 먼저 보세요.
- 널 제거는 비어 있는 값 표시까지 함께 지워요. 두 표시를 구분해야 한다면 제거 전에 표시를 통일하세요.
- 문자열 감싸기는 두 번 인코딩해서 바로 로그에 붙이면 역슬래시가 보여요. 한 번 풀어야 읽을 수 있어요.
- 감싸기 풀기는 문자열이 아닌 입력에는 예쁘게 찍기만 해서 아무 일도 안 한 것처럼 보여요. 입력 형태를 먼저 보세요.
- 숫자 하나를 평탄화하면 키 없는 숫자 뭉치가 나와요. 합치기 전 모양과 달라지니 단독 값은 평탄화하지 마세요.
- 큰 배열을 평탄화하면 키가 폭증해서 출력이 커져요. 복사나 전송이 부담되면 범위를 나눠서 처리하세요.
결과를 믿기 전 확인 목록
- 숫자 모양 키가 경로에 있는지 실행 전에 미리 보세요.
- 비어 있는 값 표시를 남겨야 하는지 정했는지 보세요.
- 감싼 문자열을 로그에 바로 붙이지 않았는지 보세요.
- 풀기 입력이 문자열 형태인지 실행 전에 보세요.
- 단독 값을 평탄화하지 않았는지 입력에서 보세요.
- 평탄화 뒤 키 개수가 감당되는지 결과에서 보세요.
- 합치기 전후 모양을 견본으로 대조했는지 보세요.
- 마침표가 든 원래 키를 평탄화하지 않았는지 보세요.
- 결과 크기가 전송 제한 안에 드는지 숫자로 보세요.
자주 묻는 질문
평탄화가 뭔가요?
{"a":{"b":1}}을 {"a.b":1}처럼 한 단계로 펴는 것입니다.
평탄화를 되돌릴 수 있나요?
네. 합치기 버튼이 'a.b.c' 키를 원래 중첩 구조로 복원해요.