Skip to content

파일 I/O 메서드

Processor 는 파일, io.Reader, io.Writer 세 가지 데이터 소스를 다루는 JSON 파일 읽기/쓰기 및 스트리밍 로드 메서드를 제공합니다.

파일 로드

LoadFromFile

시그니처: func (p *Processor) LoadFromFile(filePath string, cfg ...Config) (string, error)

파일에서 JSON 데이터를 로드하고 원시 문자열을 반환합니다.

go
data, err := p.LoadFromFile("config.json")
if err != nil {
    panic(err)
}
fmt.Println(data) // 원시 JSON 문자열

LoadFromFileAsData (비공개 전환)

API 변경 안내

LoadFromFileAsData 는 내부 메서드 (loadFromFileAsData) 로 전환되어 공개 API 로 내보내지 않습니다. LoadFromFile + Parse 조합을 대신 사용하세요:

go
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 데이터를 로드하고 원시 문자열을 반환합니다.

go
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 조합을 대신 사용하세요:

go
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 파일로 저장합니다. 상위 디렉토리를 자동으로 생성합니다.

go
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 으로 인코딩하고 파일에 씁니다. 상위 디렉토리를 자동으로 생성합니다.

go
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 을 읽고 대상 변수로 디코딩합니다.

go
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 에 씁니다.

go
var buf bytes.Buffer
err := p.SaveToWriter(&buf, data, json.PrettyConfig())

메서드 선택

시나리오추천 메서드
원시 문자열이 필요한 경우LoadFromFile / LoadFromReader
파싱된 데이터가 필요한 경우LoadFromFile + Parse / LoadFromReader + Parse
데이터를 파일에 저장SaveToFile / MarshalToFile
Writer 에 쓰기SaveToWriter
파일에서 읽고 디코딩UnmarshalFromFile

관련 문서