Skip to content

Processor

Processor 는 고성능, 커스텀 가능성, 유연한 재사용 능력을 제공하여 동일한 데이터 소스에 대한 여러 작업에 적합합니다.

특징

  • 고성능: 내부 캐시 메커니즘으로 반복 작업이 더 효율적
  • 설정 가능: 다양한 설정 옵션 지원
  • 체인 호출: 메서드가 수정된 JSON 을 반환하여 연속 작업 지원
  • 리소스 관리: 명시적인 수명 주기 제어

Processor 생성

New

시그니처: func New(cfg ...Config) (*Processor, error)

Processor 인스턴스를 생성합니다. 선택적 Config 매개변수로 프로세서를 설정합니다.

go
// 기본 설정 사용
processor, err := json.New()
if err != nil {
    panic(err)
}
defer processor.Close()

// 커스텀 설정 사용
cfg := json.DefaultConfig()
cfg.StrictMode = true
processor, err = json.New(cfg)

// 보안 설정 사용
processor, err = json.New(json.SecurityConfig())

체인 호출

Processor 메서드는 수정된 JSON 문자열을 반환하여 연속 작업을 지원합니다:

go
processor, _ := json.New()

// 여러 값 설정
result1, _ := processor.Set(data, "user.name", "CyberGo")
result2, _ := processor.Set(result1, "user.version", "1.0.0")
finalResult, _ := processor.Delete(result2, "user.temporary")

API 목록

카테고리설명
조회 및 가져오기GetString/Int/Float/Bool/Get/GetWithContext/SafeGet/GetArray/GetObject/GetMultiple/CompilePath/GetCompiled
수정Set/SetMultiple/SetCreate/SetMultipleCreate/MergeJSON/MergeMany/CompareJSON
삭제 작업Delete/DeleteClean
인코딩 및 출력Encode/EncodePretty/EncodeWithConfig/MarshalIndent/Prettify/Compact/CompactBuffer/Indent/HTMLEscape/EncodeBatch/EncodeFields/EncodeStream
파싱 및 검증Parse/ParseAny/Valid/ValidBytes/Marshal/Unmarshal
배치 작업ProcessBatch/WarmupCache
JSONLStreamJSONL/StreamJSONLParallel/StreamJSONLParallelWithContext/StreamJSONLChunked/StreamJSONLFile/ForeachJSONL/MapJSONL/ReduceJSONL/FilterJSONL/CollectJSONL/FirstJSONL
파일 I/OLoadFromFile/LoadFromReader/SaveToFile/MarshalToFile/SaveToWriter/UnmarshalFromFile
반복 메서드Foreach/ForeachWithPath/ForeachNested/ForeachReturn/ForeachWithError/ForeachNestedWithError/ForeachWithPathAndIterator/ForeachWithPathAndControl/ForeachFile/ForeachFileWithPath/ForeachFileChunked/ForeachFileNested
수명 주기Close/IsClosed/GetConfig/AddHook/ClearCache/GetStats/GetHealthStatus

전역 프로세서 관리

패키지 레벨 함수는 내부 전역 프로세서를 사용합니다. 다음 함수로 관리할 수 있습니다:

SetGlobalProcessor

시그니처: func SetGlobalProcessor(processor *Processor)

커스텀 전역 프로세서를 설정합니다. 모든 패키지 레벨 함수 (Get, Set, Marshal 등) 가 해당 프로세서를 사용합니다.

매개변수

이름타입설명
processor*Processor커스텀 프로세서 인스턴스
go
package main

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

func main() {
    // 커스텀 설정의 프로세서 생성
    cfg := json.SecurityConfig()
    processor, err := json.New(cfg)
    if err != nil {
        panic(err)
    }

    // 전역 프로세서로 설정
    json.SetGlobalProcessor(processor)

    // 이제 모든 패키지 레벨 함수가 보안 설정을 사용
    data, err := json.Get(`{"name":"Alice"}`, "name")
    // SecurityConfig 의 제한이 적용됨
    _ = data
}

주의

  • nil을 전달하면 아무 작업도 수행하지 않습니다
  • 이전 전역 프로세서는 자동으로 닫힙니다
  • 이 함수는 스레드 안전합니다

ShutdownGlobalProcessor

시그니처: func ShutdownGlobalProcessor()

전역 프로세서를 닫고 제거합니다. 이후 패키지 레벨 작업은 새로운 기본 프로세서를 생성합니다.

go
package main

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

func main() {
    // 전역 프로세서 사용
    data, _ := json.Get(`{"key":"value"}`, "key")
    _ = data

    // 애플리케이션 종료 시 정리
    json.ShutdownGlobalProcessor()

    // 이후 작업은 새로운 기본 프로세서를 생성
    data2, _ := json.Get(`{"key":"value2"}`, "key")
    _ = data2
}

사용 시나리오

  • 장시간 실행되는 서비스 종료 시 리소스 정리
  • 프로세서 설정을 재설정해야 할 때
  • 테스트 환경에서 다른 테스트 케이스 격리

관련 문서