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 |
| JSONL | StreamJSONL/StreamJSONLParallel/StreamJSONLParallelWithContext/StreamJSONLChunked/StreamJSONLFile/ForeachJSONL/MapJSONL/ReduceJSONL/FilterJSONL/CollectJSONL/FirstJSONL |
| 파일 I/O | LoadFromFile/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
}사용 시나리오
- 장시간 실행되는 서비스 종료 시 리소스 정리
- 프로세서 설정을 재설정해야 할 때
- 테스트 환경에서 다른 테스트 케이스 격리
관련 문서
- 패키지 함수 - 최상위 함수 레퍼런스
- Config - 설정 옵션
- 인터페이스 정의 - Hook 인터페이스
- Hook 훅 시스템 - 훅 자세한 사용 가이드