Skip to content

解析と検証メソッド

Processor は JSON 解析と有効性検証の機能を提供します。ファイル読み書きとストリーミング読み込みはファイル I/Oを参照してください。

検証メソッド

Valid

シグネチャ:func (p *Processor) Valid(jsonStr string, cfg ...Config) (bool, error)

JSON 文字列が有効かどうかを検証します。

go
valid, err := p.Valid(data)
if valid && err == nil {
    // 有効な JSON
}

ValidBytes

シグネチャ:func (p *Processor) ValidBytes(data []byte) bool

バイトスライスが有効な JSON かどうかを検証します。

go
if p.ValidBytes([]byte(data)) {
    // 有効な JSON
}

解析メソッド

Parse

シグネチャ:func (p *Processor) Parse(jsonStr string, target any, cfg ...Config) error

JSON 文字列をターゲット変数に解析します。標準モードと数値保持モードをサポートします。

go
// map に解析
var obj map[string]any
err := p.Parse(`{"name":"Alice"}`, &obj)

// 構造体に解析
type User struct { Name string }
var user User
err = p.Parse(`{"name":"Alice"}`, &user)

// 数値保持モードを使用
cfg := json.DefaultConfig()
cfg.PreserveNumbers = true
var data any
err = p.Parse(`{"price":19.99}`, &data, cfg)

ParseAny

シグネチャ:func (p *Processor) ParseAny(jsonStr string, cfg ...Config) (any, error)

JSON 文字列を any 型に解析します。

go
data, err := p.ParseAny(`{"name": "test"}`)
if err != nil {
    panic(err)
}

PreParse

シグネチャ:func (p *Processor) PreParse(jsonStr string, cfg ...Config) (*ParsedJSON, error)

JSON データを事前解析し、同じデータに対する複数回のクエリで再解析を回避します。

go
parsed, err := p.PreParse(jsonStr)
if err != nil {
    panic(err)
}

// 解析済みデータに対して複数回クエリ
name, _ := p.GetFromParsed(parsed, "user.name")
age, _ := p.GetFromParsed(parsed, "user.age")

GetFromParsed

シグネチャ:func (p *Processor) GetFromParsed(parsed *ParsedJSON, path string, cfg ...Config) (any, error)

事前解析済みデータから値を取得します。PreParse と組み合わせて複数回クエリのパフォーマンスを向上させます。

SetFromParsed

シグネチャ:func (p *Processor) SetFromParsed(parsed *ParsedJSON, path string, value any, cfg ...Config) (*ParsedJSON, error)

事前解析済みデータに値を設定し、新しい ParsedJSON を返します。

go
parsed, _ := p.PreParse(jsonStr)
newParsed, err := p.SetFromParsed(parsed, "user.name", "Bob")

メソッドの選択

シナリオ推奨メソッド
有効性の検証のみValid / ValidBytes
ターゲット変数への解析Parse
同じデータを複数回クエリPreParse + GetFromParsed

関連