소개
jo는 셸 환경에서 JSON 객체와 배열을 간단하게 생성할 수 있는 명령줄 유틸리티입니다. Jan-Piet Mens가 개발한 이 오픈소스 도구는 스크립트와 자동화 작업에서 복잡한 JSON 구조를 손쉽게 만들기 위해 설계되었습니다.GPL-2.0 라이선스로 배포됩니다.
상세정보
JSON 객체 생성
명령줄에서 키와 값을 지정하여 JSON 객체를 생성할 수 있습니다. 예를 들어 jo name="jo" n=17 parser=false를 실행하면 {“name”:”jo”,”n”:17,”parser”:false} 형태의 JSON이 출력됩니다.
JSON 배열 생성
-a 옵션을 사용하여 시퀀스나 목록을 JSON 배열로 변환할 수 있습니다. 예를 들어 seq 1 10 | jo -a는 [1,2,3,4,5,6,7,8,9,10] 형태의 배열을 생성합니다.
중첩 구조 지원
다른 JSON 파일을 참조하거나 변수를 사용하여 중첩된 JSON 구조를 만들 수 있습니다. 파일에서 값을 읽어 ARG_MAX 제한을 극복할 수도 있습니다.
데이터 타입 처리
문자열, 숫자, 불리언(true/false), null 등 다양한 JSON 데이터 타입을 지원합니다. -B 옵션으로 불리언/null 처리를 비활성화할 수도 있습니다.
키 중복 관리
기본적으로 중복된 키는 추가되지만, -D 옵션을 사용하면 중복된 키를 제거하고 마지막 값만 유지할 수 있습니다.
설치·시작·기본 사용
다양한 패키지 관리자를 통해 jo를 설치할 수 있습니다.
- Homebrew (macOS):
brew install jo - MacPorts:
sudo port install jo - Ubuntu:
apt-get install jo - Fedora:
dnf install jo - Snap (Linux):
snap install jo - Windows (Scoop):
scoop install jo - winget:
winget install --id jpmens.jo --exact
소스 코드에서 빌드하는 경우 GitHub 저장소를 클론한 후 autoreconf -i && ./configure && make check && make install 명령을 실행합니다.
활용 예시
jo는 셸 스크립트에서 JSON 설정 파일을 생성하거나, API 요청용 JSON 페이로드를 만들거나, 명령줄 출력을 JSON으로 변환하는 데 활용할 수 있습니다. 예를 들어 파일 목록을 JSON 배열로 변환하거나, curl 출력에 추가 필드를 덧붙여 구조화된 JSON으로 만들 수 있습니다.
지원 환경·요구사항
jo는 C 언어로 작성되어 다양한 플랫폼에서 빌드 및 실행이 가능합니다. Homebrew, MacPorts, apt, dnf, snap, winget 등 여러 패키지 관리자를 통해 설치할 수 있으며, Docker 이미지도 제공됩니다.
버전·업데이트
현재 최신 버전은 1.9(2022년 11월 4일 출시)입니다. 이 버그 수정 릴리스에서는 stdin에서 긴 줄 읽기 관련 문제(#195)와 누락된 테스트 파일(#196)이 해결되었습니다.
제한·라이선스·확인사항
jo는 GPL-2.0 라이선스하에 배포되는 오픈소스 프로젝트입니다. GUI 없이 명령줄에서만 사용할 수 있으며, 기본적인 셸 사용법과 JSON 구조에 대한 이해가 필요합니다. Windows WSL2 환경에서는 git의 자동 CRLF 변환을 비활성화해야 테스트가 정상 작동합니다(git config --local core.autocrlf false).
FAQ
- Q: jo는 무료로 사용할 수 있나요?
A: 네, jo는 오픈소스 프로젝트로 GPL-2.0 라이선스 하에 무료로 사용할 수 있습니다. - Q: jo를 사용하려면 프로그래밍 언어를 알아야 하나요?
A: jo 자체는 프로그래밍 언어를 알지 못해도 사용할 수 있는 독립형 명령줄 도구입니다. 기본적인 셸 사용법만 알고 있으면 됩니다. - Q: jo로 만든 JSON을 다른 프로그램에서 사용할 수 있나요?
A: 네, jo는 표준 JSON 형식을 출력하므로 다른 JSON 처리 도구나 프로그램과 호환됩니다.
시스템 요구사항
C 컴파일러가 필요합니다. 소스 코드에서 빌드하는 경우 autoreconf, automake, autoconf가 요구됩니다. 설치된 시스템에서는 C 런타임 환경이 필요합니다.


