Skip to content

JSON 처리 라이브러리

github.com/cybergodev/json은 고성능, 스레드 안전한 Go JSON 처리 라이브러리입니다. 파싱, 쿼리, 수정, 검증, 포맷팅 등 풍부한 JSON 조작 기능을 제공하면서도 표준 라이브러리 encoding/json과 100% 호환성을 유지합니다.

핵심 기능

  • 100% encoding/json 호환 — 표준 라이브러리를 원활하게 대체, 기존 코드 수정 불필요
  • 스레드 안전 — 모든 작업이 동시성 안전, 고동시성 시나리오 지원
  • 경로 쿼리 — JSONPath 스타일 경로 표현식 지원, 와일드카드 및 슬라이스 포함
  • 타입 안전 가져오기 — 제네릭 API (GetTyped[T]) 및 타입 단언 메서드 (SafeGet)
  • 스트림 처리 — 대용량 파일 및 JSONL/NDJSON 형식 스트림 처리 지원
  • 보안 방어 — 입력 검증, 깊이 제한, 위험 패턴 감지 내장
  • 고성능 캐시 — 스마트 캐시, 사전 파싱 최적화, 객체 풀 재사용
  • 확장 가능 — 훅 시스템, 커스텀 인코더, 검증기

설치

bash
go get github.com/cybergodev/json

30 초 빠른 체험

go
package main

import (
    "fmt"
    "github.com/cybergodev/json"
)

func main() {
    data := `{"name": "CyberGo", "version": 1, "tags": ["json", "go"]}`

    // 1. 경로로 가져오기
    name := json.GetString(data, "name")
    fmt.Println("Name:", name)

    // 2. 값 수정
    updated, _ := json.Set(data, "version", 2)
    fmt.Println("Updated:", updated)

    // 3. 검증
    if json.Valid([]byte(data)) {
        fmt.Println("Valid JSON")
    }

    // 4. 기본값으로 가져오기
    desc := json.GetString(data, "description", "기본 설명")
    fmt.Println("Description:", desc)

    // 5. 구조체로 디코딩
    type Config struct {
        Name    string   `json:"name"`
        Version int      `json:"version"`
        Tags    []string `json:"tags"`
    }
    var config Config
    json.Unmarshal([]byte(data), &config)
    fmt.Printf("Config: %+v\n", config)
}

기능 개요

경로 작업

기능함수설명
값 가져오기Get, GetString, GetInt...중첩 경로, 배열 인덱스 지원
기본값으로 가져오기GetString, GetIntdefaultValue 매개변수 전달
값 설정Set기본적으로 존재하지 않는 경로 자동 생성 (Config.CreatePaths)
값 삭제Delete지정된 경로 삭제

인코딩/디코딩

기능함수설명
인코딩Marshal, MarshalIndentencoding/json과 100% 호환
디코딩Unmarshal, Parse, ParseAny제네릭 및 타입 안전 지원
포맷팅Prettify, CompactJSON 이쁘게/압축 출력

고급 기능

기능함수/타입설명
제네릭 APIGetTyped[T]타입 안전한 제네릭 가져오기
사전 파싱Processor.PreParse, Processor.GetFromParsed한 번 파싱, 여러 번 쿼리
안전 가져오기SafeGetAccessResult체인 타입 변환
스트림 처리NDJSONProcessor줄 단위 스트리밍, 메모리 제어 가능
JSONL 처리StreamLinesInto[T]로그/데이터 파이프라인
Schema 검증ValidateSchemaJSON Schema 검증

모듈 탐색

모듈설명
빠른 시작설치, 기본 사용법, 핵심 개념
경로 표현식 문법경로 쿼리, 슬라이스, 와일드카드, 필드 추출
Processor 가이드언제 Processor 를 사용할까, 사전 파싱 최적화, 수명 주기
API 문서완전한 API 참조
대용량 파일 처리스트림 처리, 청크 읽기/쓰기, 메모리 최적화
사용 예제실전 코드 예제
고급 기능 예제배치 인코딩, 사전 파싱, 훅 시스템

성능 특징

  • 제로 카피 파싱 — 메모리 할당 감소
  • 스마트 캐시 — 핫 경로 자동 캐시, 캐시 웜업 지원
  • 객체 풀 — 중간 객체 재사용, GC 압력 감소
  • 병렬 스트림 처리 — JSONL 스트리밍 처리에서 다중 worker 병렬 지원 (StreamJSONLParallel)
  • 사전 파싱 최적화 — 대형 JSON 한 번 파싱, 여러 번 쿼리

표준 라이브러리 비교

기능encoding/jsoncybergodev/json
기본 인코딩/디코딩✅ 100% 호환
경로 쿼리✅ 점/대괄호 문법
타입 안전 가져오기✅ 제네릭 API
스트림 처리기본✅ 강화
JSONL 지원✅ 네이티브 지원
보안 검증✅ 내장 방어
훅 시스템✅ 확장 가능
캐시 최적화✅ 스마트 캐시

빠른 의사결정 가이드

시나리오추천 방법
간단한 쿼리GetString(data, "path")
기본값 포함GetString(data, "path", "default")
타입 안전GetTyped[User](data, "user")
빈번한 쿼리Processor + PreParse
대용량 파일Processor.ForeachFile
신뢰할 수 없는 입력SecurityConfig()

다음 단계