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체인 타입 변환
스트림 처리Processor.ForeachFile대용량 파일 메모리 효율적
JSONL 처리StreamLinesInto[T]로그/데이터 파이프라인
Schema 검증ValidateSchemaJSON Schema 검증

모듈 탐색

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

성능 특징

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

표준 라이브러리 비교

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

빠른 의사결정 가이드

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

다음 단계