解析与验证方法
Processor 提供 JSON 解析与有效性验证方法。文件读写与流式加载见文件操作。
验证方法
Valid
签名:func (p *Processor) Valid(jsonStr string, cfg ...Config) (bool, error)
验证 JSON 字符串是否有效。
valid, err := p.Valid(data)
if valid && err == nil {
// 有效的 JSON
}ValidBytes
签名:func (p *Processor) ValidBytes(data []byte) bool
验证字节切片是否为有效 JSON。
if p.ValidBytes([]byte(data)) {
// 有效的 JSON
}解析方法
Parse
签名:func (p *Processor) Parse(jsonStr string, target any, cfg ...Config) error
解析 JSON 字符串到目标变量。支持标准模式和数字保留模式。
// 解析为 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 类型。
data, err := p.ParseAny(`{"name": "test"}`)
if err != nil {
panic(err)
}PreParse
签名:func (p *Processor) PreParse(jsonStr string, cfg ...Config) (*ParsedJSON, error)
预解析 JSON 数据,用于后续多次查询同一数据时避免重复解析。
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。
parsed, _ := p.PreParse(jsonStr)
newParsed, err := p.SetFromParsed(parsed, "user.name", "Bob")方法选择
| 场景 | 推荐方法 |
|---|---|
| 仅验证有效性 | Valid / ValidBytes |
| 解析到目标变量 | Parse |
| 多次查询同一数据 | PreParse + GetFromParsed |