Documentation ¶
Overview ¶
Package gjson 提供了方便的 API 用于处理 JSON/XML/INI/YAML/TOML 数据。
Index ¶
- func Json格式到变量(值 interface{}, 选项 ...Options) (interface{}, error)
- func Json格式到变量指针(值 interface{}, 变量指针 interface{}, 选项 ...Options) (错误 error)
- func MarshalIndent别名(v interface{}, prefix, indent string) (marshaledBytes []byte, err error)
- func Marshal别名(v interface{}) (marshaledBytes []byte, err error)
- func Unmarshal别名(data []byte, v interface{}) (err error)
- func X变量到json字节集(值 interface{}) ([]byte, error)
- func X变量到json字节集PANI(值 interface{}) []byte
- func X变量到json文本(值 interface{}) (string, error)
- func X变量到json文本PANI(值 interface{}) string
- func X是否为有效json(值 interface{}) bool
- func X检查类型(待判断值 ContentType) bool
- type ContentType
- type Json
- func X创建(值 interface{}, 并发安全 ...bool) *Json
- func X创建并按类型标签(值 interface{}, 类型标签 string, 并发安全 ...bool) *Json
- func X创建并按选项(值 interface{}, 选项 Options) *Json
- func X加载Properties(值 interface{}, 并发安全 ...bool) (*Json, error)
- func X加载Toml(值 interface{}, 并发安全 ...bool) (*Json, error)
- func X加载Yaml(值 interface{}, 并发安全 ...bool) (*Json, error)
- func X加载ini(值 interface{}, 并发安全 ...bool) (*Json, error)
- func X加载json(值 interface{}, 并发安全 ...bool) (*Json, error)
- func X加载xml(值 interface{}, 并发安全 ...bool) (*Json, error)
- func X加载并按格式(类型标签 ContentType, 值 interface{}, 并发安全 ...bool) (*Json, error)
- func X加载并按选项(值 interface{}, 选项 Options) (*Json, error)
- func X加载并自动识别格式(值 interface{}, 并发安全 ...bool) (*Json, error)
- func X加载文件(路径 string, 并发安全 ...bool) (*Json, error)
- func X解码到json(值 interface{}, 选项 ...Options) (*Json, error)
- func (j *Json) Interface() interface{}
- func (j Json) MarshalJSON() ([]byte, error)
- func (j *Json) String() string
- func (j *Json) UnmarshalJSON(b []byte) error
- func (j *Json) UnmarshalValue(value interface{}) error
- func (j *Json) X删除(表达式 string) error
- func (j *Json) X删除PANI(表达式 string)
- func (j *Json) X加入(表达式 string, 值 interface{}) error
- func (j *Json) X加入PANI(表达式 string, 值 interface{})
- func (j *Json) X取Map() map[string]interface{}
- func (j *Json) X取MapStrAny() map[string]interface{}
- func (j *Json) X取TOML字节集() ([]byte, error)
- func (j *Json) X取TOML字节集PANI() []byte
- func (j *Json) X取TOML文本() (string, error)
- func (j *Json) X取TOML文本PANI() string
- func (j *Json) X取YAML字节集() ([]byte, error)
- func (j *Json) X取YAML字节集PANI() []byte
- func (j *Json) X取YAML字节集并格式化(缩进 string) ([]byte, error)
- func (j *Json) X取YAML文本() (string, error)
- func (j *Json) X取YAML文本PANI() string
- func (j *Json) X取any数组() []interface{}
- func (j *Json) X取ini字节集() ([]byte, error)
- func (j *Json) X取ini字节集PANI() []byte
- func (j *Json) X取ini文本() (string, error)
- func (j *Json) X取ini文本PANI() string
- func (j *Json) X取json字节集() ([]byte, error)
- func (j *Json) X取json字节集PANI() []byte
- func (j *Json) X取json字节集并格式化() ([]byte, error)
- func (j *Json) X取json字节集并格式化PANI() []byte
- func (j *Json) X取json文本() (string, error)
- func (j *Json) X取json文本PANI() string
- func (j *Json) X取json文本并格式化() (string, error)
- func (j *Json) X取json文本并格式化PANI() string
- func (j *Json) X取properties字节集() ([]byte, error)
- func (j *Json) X取properties字节集PANI() []byte
- func (j *Json) X取properties文本() (string, error)
- func (j *Json) X取properties文本PANI() string
- func (j *Json) X取xml字节集(rootTag ...string) ([]byte, error)
- func (j *Json) X取xml字节集PANI(rootTag ...string) []byte
- func (j *Json) X取xml字节集并格式化(rootTag ...string) ([]byte, error)
- func (j *Json) X取xml字节集并格式化PANI(rootTag ...string) []byte
- func (j *Json) X取xml文本(rootTag ...string) (string, error)
- func (j *Json) X取xml文本PANI(rootTag ...string) string
- func (j *Json) X取xml文本并格式化(rootTag ...string) (string, error)
- func (j *Json) X取xml文本并格式化PANI(rootTag ...string) string
- func (j *Json) X取值(表达式 string, 默认值 ...interface{}) *泛型类.Var
- func (j *Json) X取对象(表达式 string, 默认值 ...interface{}) *Json
- func (j *Json) X取对象Map(表达式 string, 默认值 ...interface{}) map[string]*Json
- func (j *Json) X取对象数组(表达式 string, 默认值 ...interface{}) []*Json
- func (j *Json) X取数组() []interface{}
- func (j *Json) X取文本() string
- func (j *Json) X取泛型类() *泛型类.Var
- func (j *Json) X取结构体指针(结构体指针 interface{}, 名称映射 ...map[string]string) error
- func (j *Json) X取长度(表达式 string) int
- func (j *Json) X是否为Nil() bool
- func (j *Json) X是否存在(表达式 string) bool
- func (j *Json) X设置值(表达式 string, 值 interface{}) error
- func (j *Json) X设置值PANI(表达式 string, 值 interface{})
- func (j *Json) X设置分层冲突检查(启用 bool)
- func (j *Json) X设置参数分隔符(分隔符 byte)
- func (j *Json) X调试输出()
- type Options
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Json格式到变量指针 ¶
DecodeTo 将 json 格式的 `data` 解码到指定的 golang 变量 `v`。 参数 `data` 可以是 bytes 类型或 string 类型。 参数 `v` 应该是指针类型。
func MarshalIndent别名 ¶
MarshalIndent 是 json.MarshalIndent 函数的别名,目的是为了符合使用 json.MarshalIndent 函数的习惯。
func Unmarshal别名 ¶
Unmarshal 是 DecodeTo 的别名,目的是为了符合 json.Marshal/Unmarshal 函数的习惯用法。
func X变量到json字节集 ¶
Encode 将任何 Go 语言变量 `value` 编码为 JSON 字节。
func X变量到json字节集PANI ¶
func X变量到json字节集PANI(值 interface{}) []byte
MustEncode 的行为与 Encode 相同,但当发生任何错误时,它会触发 panic(异常)。
func X变量到json文本 ¶
EncodeString 将任意的 Go 语言变量 `value` 编码为 JSON 字符串。
func X变量到json文本PANI ¶
func X变量到json文本PANI(值 interface{}) string
MustEncodeString 将任何 Go 语言变量 `value` 编码为 JSON 字符串。 如果出现任何错误,它将引发恐慌(panic)。
func X是否为有效json ¶
func X是否为有效json(值 interface{}) bool
Valid 检查 `data` 是否为有效的 JSON 数据类型。 参数 `data` 指定了 json 格式的数据,可以是字节切片类型或字符串类型。
Types ¶
type ContentType ¶
type ContentType string
const ( ContentTypeJson ContentType = `json` ContentTypeJs ContentType = `js` ContentTypeXml ContentType = `xml` ContentTypeIni ContentType = `ini` ContentTypeYaml ContentType = `yaml` ContentTypeYml ContentType = `yml` ContentTypeToml ContentType = `toml` ContentTypeProperties ContentType = `properties` )
type Json ¶
type Json struct {
// contains filtered or unexported fields
}
Json 是自定义的 JSON 结构体。
func X创建 ¶
New 函数通过任意类型的 `data` 创建一个 Json 对象,但 `data` 应为 map 或 slice 类型以保证数据可访问性,否则创建此对象将无实际意义。
参数 `safe` 指定是否在并发安全的上下文中使用此 Json 对象,默认情况下 `safe` 为 false。
func X创建并按类型标签 ¶
NewWithTag 创建一个Json对象,其数据类型可以是任意的 `data`,但为了方便数据访问,`data` 应该是一个 map 或 slice,否则将失去意义。
参数 `tags` 指定了在结构体转为 map 时使用的优先级标签,多个标签使用字符 ',' 连接。
参数 `safe` 指定了是否在并发安全的上下文中使用此 Json 对象,默认情况下为 false。
func X创建并按选项 ¶
NewWithOptions 创建一个Json对象,其变量类型可以是 `data` 的任意类型,但为了能够访问数据,`data` 应该是一个 map 或 slice,否则将毫无意义。
func X加载Properties ¶
LoadProperties 从给定的TOML格式内容创建一个Json对象。
func X加载并按格式 ¶
func X加载并按格式(类型标签 ContentType, 值 interface{}, 并发安全 ...bool) (*Json, error)
LoadContentType 从给定的类型和内容创建一个 Json 对象, 支持以下数据内容类型: JSON、XML、INI、YAML 和 TOML。
func X加载并自动识别格式 ¶
LoadContent 从给定的内容创建一个 Json 对象,它会自动检查 `content` 的数据类型, 支持以下数据内容类型: JSON、XML、INI、YAML 和 TOML。
func (*Json) Interface ¶
func (j *Json) Interface() interface{}
Interface 返回 JSON 值。
Example ¶
type BaseInfo struct { Name string Age int } info := BaseInfo{ Name: "John", Age: 18, } j := json类.X创建(info) fmt.Println(j.Interface()) var nilJ *json类.Json = nil fmt.Println(nilJ.Interface())
Output: map[Age:18 Name:John] <nil>
func (Json) MarshalJSON ¶
MarshalJSON 实现了 json.Marshal 接口所需的 MarshalJSON 方法。
Example ¶
type BaseInfo struct { Name string Age int } info := BaseInfo{ Name: "John", Age: 18, } j := json类.X创建(info) jsonBytes, _ := j.MarshalJSON() fmt.Println(string(jsonBytes))
Output: {"Age":18,"Name":"John"}
func (*Json) UnmarshalJSON ¶
UnmarshalJSON 实现了 json.Unmarshal 接口的 UnmarshalJSON 方法。
Example ¶
jsonStr := `{"Age":18,"Name":"John"}` j := json类.X创建("") j.UnmarshalJSON([]byte(jsonStr)) fmt.Println(j.X取Map())
Output: map[Age:18 Name:John]
func (*Json) UnmarshalValue ¶
UnmarshalValue 是一个接口实现,用于为 Json 设置任意类型的值。
func (*Json) X取MapStrAny ¶
MapStrAny 实现了接口函数 MapStrAny()。
func (*Json) X取TOML字节集PANI ¶
func (*Json) X取TOML文本PANI ¶
func (*Json) X取YAML字节集PANI ¶
func (*Json) X取YAML文本PANI ¶
func (*Json) X取ini字节集PANI ¶
func (*Json) X取json字节集PANI ¶
func (*Json) X取json字节集并格式化 ¶
func (*Json) X取json字节集并格式化PANI ¶
func (*Json) X取json文本PANI ¶
func (*Json) X取json文本并格式化 ¶
func (*Json) X取json文本并格式化PANI ¶
func (*Json) X取properties字节集 ¶
========================================================================== 属性 ========================================================================== 将JSON转换为属性
func (*Json) X取properties字节集PANI ¶
func (*Json) X取properties文本 ¶
TopropertiesString 将属性转换为字符串
func (*Json) X取xml字节集PANI ¶
func (*Json) X取xml字节集并格式化PANI ¶
func (*Json) X取xml文本PANI ¶
func (*Json) X取xml文本并格式化PANI ¶
func (*Json) X取值 ¶
Get 方法通过指定的`pattern`获取并返回值。 如果 `pattern` 为".",则返回当前Json对象的所有值。 如果根据`pattern`未找到值,则返回nil。
我们还可以通过在`pattern`中指定切片的索引号来访问切片项,例如: "list.10", "array.0.name", "array.0.1.id"。
如果未找到`pattern`对应的值,将返回由`def`指定的默认值。
func (*Json) X取数组 ¶
func (j *Json) X取数组() []interface{}
Array 将当前Json对象转换为 []interface{} 类型的切片。 如果转换失败,则返回nil。
func (*Json) X取长度 ¶
Len 通过指定的 `pattern` 返回值的长度/大小。 通过 `pattern` 所获取的目标值应为切片或字典类型。 若目标值未找到,或者其类型无效,则返回 -1。
type Options ¶
type Options struct { Safe bool // 标记此对象适用于并发安全的使用场景。这尤其针对Json对象的创建。 Tags string // 自定义解析优先级标签,例如:"json,yaml,MyTag"。这主要用于将结构体解析为Json对象时。 Type ContentType // Type 指定数据内容类型,例如:json、xml、yaml、toml、ini。 StrNumber bool // StrNumber 使 Decoder 在将数字反序列化到 interface{} 时,将其作为字符串处理而非 float64。 }
Json对象创建/加载的选项。