json_profile(https://github.com/tylerneylon/json_profile)은 새로운 JSON 파일의 주요 스키마와 데이터 위치를 빠르게 이해하는 데 도움을 주는 도구로, 리스트의 피어 요소가 동일한 구조를 가질 때 유용함. 파일 구조를 학습하고, 가장 무거운 집계 경로를 출력하며, 경로별 크기 힌트를 제공함.
espath(https://github.com/tomhodgins/espath)는 XPath와 CSS 선택자를 사용하여 JSON의 데이터를 필터링하고 찾는 라이브러리임. JavaScript 객체를 XML DOM으로 변환하고 쿼리를 실행한 후 다시 객체로 변환하거나, 원본 객체 레지스터를 유지하고 원본 객체를 검색하는 방식으로 동작함.
JSON이 나타내는 데이터 구조에 대한 일반적인 이름이 있는지에 대한 질문과 JSON, YAML, Python 딕셔너리, TOML 등 유사한 구조에서 작동하는 경로 언어의 필요성에 대한 언급이 있음.
Hacker News 의견
JSONata(https://jsonata.org)는 JSON 조작을 위한 최고의 도구 중 하나로, JsonPath 문법을 사용하며 노드 선택 외에도 산술, 비교, 정렬, 그룹화, 날짜 조작, 집계 등의 도우미 함수를 제공함. JS로 작성되어 Node나 브라우저에서 사용 가능하며, Python 래퍼(https://pypi.org/project/pyjsonata/)도 있음.
json_profile(https://github.com/tylerneylon/json_profile)은 새로운 JSON 파일의 주요 스키마와 데이터 위치를 빠르게 이해하는 데 도움을 주는 도구로, 리스트의 피어 요소가 동일한 구조를 가질 때 유용함. 파일 구조를 학습하고, 가장 무거운 집계 경로를 출력하며, 경로별 크기 힌트를 제공함.
espath(https://github.com/tomhodgins/espath)는 XPath와 CSS 선택자를 사용하여 JSON의 데이터를 필터링하고 찾는 라이브러리임. JavaScript 객체를 XML DOM으로 변환하고 쿼리를 실행한 후 다시 객체로 변환하거나, 원본 객체 레지스터를 유지하고 원본 객체를 검색하는 방식으로 동작함.
JSON이 나타내는 데이터 구조에 대한 일반적인 이름이 있는지에 대한 질문과 JSON, YAML, Python 딕셔너리, TOML 등 유사한 구조에서 작동하는 경로 언어의 필요성에 대한 언급이 있음.
SQLite는 json_extract()와 같은 함수에서 사용되는 JSON Path의 하위 집합을 코어 데이터베이스에 포함하고 있음. 관련 상세 노트: https://til.simonwillison.net/sqlite/json-extract-path
Insomnia와 Bruno는 JSON Path를 사용하여 응답을 필터링하는 기능이 있음.
PostgreSQL의 jsonpath 지원을 사용하여 DB 행에 대한 사용자 정의 필터링 규칙을 만드는 데 사용했음.
XPATH 인젝션이 널리 사용되었던 것처럼 JSON 경로 인젝션 공격이 불가피할 것으로 예상됨. (https://owasp.org/www-community/attacks/XPATH_Injection 참조)
jq와 같은 유사한 도구에 대한 언급이 없는 것이 의아함.
너무 많은 JSON 경로 구문이 있어서 아쉬움. jq, JSON path, AWS CLI, MySQL 등 각각 다른 구문을 사용하므로 근육 기억을 얻기 어려움.