파일 I/O 메서드
Processor 는 파일, io.Reader, io.Writer 세 가지 데이터 소스를 다루는 JSON 파일 읽기/쓰기 및 스트리밍 로드 메서드를 제공합니다.
파일 로드
LoadFromFile
시그니처: func (p *Processor) LoadFromFile(filePath string, cfg ...Config) (string, error)
파일에서 JSON 데이터를 로드하고 원시 문자열을 반환합니다.
data, err := p.LoadFromFile("config.json")
if err != nil {
panic(err)
}
fmt.Println(data) // 원시 JSON 문자열LoadFromFileAsData (비공개 전환)
API 변경 안내
LoadFromFileAsData 는 내부 메서드 (loadFromFileAsData) 로 전환되어 공개 API 로 내보내지 않습니다. LoadFromFile + Parse 조합을 대신 사용하세요:
jsonStr, err := p.LoadFromFile("data.json")
if err != nil {
panic(err)
}
var data any
err = p.Parse(jsonStr, &data)
// data 타입이 map[string]any 또는 []any
if obj, ok := data.(map[string]any); ok {
fmt.Println(obj["name"])
}Reader 로드
LoadFromReader
시그니처: func (p *Processor) LoadFromReader(reader io.Reader, cfg ...Config) (string, error)
Reader 에서 JSON 데이터를 로드하고 원시 문자열을 반환합니다.
file, _ := os.Open("data.json")
defer file.Close()
data, err := p.LoadFromReader(file)
if err != nil {
panic(err)
}LoadFromReaderAsData (비공개 전환)
API 변경 안내
LoadFromReaderAsData 는 내부 메서드 (loadFromReaderAsData) 로 전환되어 공개 API 로 내보내지 않습니다. LoadFromReader + Parse 조합을 대신 사용하세요:
file, _ := os.Open("data.json")
defer file.Close()
jsonStr, err := p.LoadFromReader(file)
if err != nil {
panic(err)
}
var data any
err = p.Parse(jsonStr, &data)파일 쓰기
SaveToFile
시그니처: func (p *Processor) SaveToFile(filePath string, data any, cfg ...Config) error
데이터를 JSON 파일로 저장합니다. 상위 디렉토리를 자동으로 생성합니다.
err := p.SaveToFile("data.json", map[string]any{"name": "CyberGo"})
// PrettyConfig 로 포맷팅 출력 저장
err = p.SaveToFile("data.json", data, json.PrettyConfig())MarshalToFile
시그니처: func (p *Processor) MarshalToFile(path string, data any, cfg ...Config) error
데이터를 JSON 으로 인코딩하고 파일에 씁니다. 상위 디렉토리를 자동으로 생성합니다.
err := p.MarshalToFile("output.json", data)
// 포맷팅하여 저장
err = p.MarshalToFile("output.json", data, json.PrettyConfig())UnmarshalFromFile
시그니처: func (p *Processor) UnmarshalFromFile(path string, v any, cfg ...Config) error
파일에서 JSON 을 읽고 대상 변수로 디코딩합니다.
var config Config
err := p.UnmarshalFromFile("config.json", &config)
if err != nil {
panic(err)
}SaveToWriter
시그니처: func (p *Processor) SaveToWriter(writer io.Writer, data any, cfg ...Config) error
데이터를 JSON 으로 인코딩하고 io.Writer 에 씁니다.
var buf bytes.Buffer
err := p.SaveToWriter(&buf, data, json.PrettyConfig())메서드 선택
| 시나리오 | 추천 메서드 |
|---|---|
| 원시 문자열이 필요한 경우 | LoadFromFile / LoadFromReader |
| 파싱된 데이터가 필요한 경우 | LoadFromFile + Parse / LoadFromReader + Parse |
| 데이터를 파일에 저장 | SaveToFile / MarshalToFile |
| Writer 에 쓰기 | SaveToWriter |
| 파일에서 읽고 디코딩 | UnmarshalFromFile |