json类

package
v0.0.0-...-2910145 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 14, 2024 License: MIT Imports: 22 Imported by: 0

Documentation

Overview

Package gjson 提供了方便的 API 用于处理 JSON/XML/INI/YAML/TOML 数据。

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Json格式到变量

func Json格式到变量(值 interface{}, 选项 ...Options) (interface{}, error)

Decode 解码 JSON 格式的 `data` 为 Go 语言变量。 参数 `data` 可以是字节切片(bytes)类型或字符串(string)类型。

func Json格式到变量指针

func Json格式到变量指针(值 interface{}, 变量指针 interface{}, 选项 ...Options) (错误 error)

DecodeTo 将 json 格式的 `data` 解码到指定的 golang 变量 `v`。 参数 `data` 可以是 bytes 类型或 string 类型。 参数 `v` 应该是指针类型。

func MarshalIndent别名

func MarshalIndent别名(v interface{}, prefix, indent string) (marshaledBytes []byte, err error)

MarshalIndent 是 json.MarshalIndent 函数的别名,目的是为了符合使用 json.MarshalIndent 函数的习惯。

func Marshal别名

func Marshal别名(v interface{}) (marshaledBytes []byte, err error)

Marshal 是 Encode 的别名,以便与 json.Marshal/Unmarshal 函数的习惯用法保持一致。

func Unmarshal别名

func Unmarshal别名(data []byte, v interface{}) (err error)

Unmarshal 是 DecodeTo 的别名,目的是为了符合 json.Marshal/Unmarshal 函数的习惯用法。

func X变量到json字节集

func X变量到json字节集(值 interface{}) ([]byte, error)

Encode 将任何 Go 语言变量 `value` 编码为 JSON 字节。

func X变量到json字节集PANI

func X变量到json字节集PANI(值 interface{}) []byte

MustEncode 的行为与 Encode 相同,但当发生任何错误时,它会触发 panic(异常)。

func X变量到json文本

func X变量到json文本(值 interface{}) (string, error)

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 格式的数据,可以是字节切片类型或字符串类型。

func X检查类型

func X检查类型(待判断值 ContentType) bool

IsValidDataType 检查并返回给定的 `dataType` 是否为有效载入数据类型。

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创建

func X创建(值 interface{}, 并发安全 ...bool) *Json

New 函数通过任意类型的 `data` 创建一个 Json 对象,但 `data` 应为 map 或 slice 类型以保证数据可访问性,否则创建此对象将无实际意义。

参数 `safe` 指定是否在并发安全的上下文中使用此 Json 对象,默认情况下 `safe` 为 false。

func X创建并按类型标签

func X创建并按类型标签(值 interface{}, 类型标签 string, 并发安全 ...bool) *Json

NewWithTag 创建一个Json对象,其数据类型可以是任意的 `data`,但为了方便数据访问,`data` 应该是一个 map 或 slice,否则将失去意义。

参数 `tags` 指定了在结构体转为 map 时使用的优先级标签,多个标签使用字符 ',' 连接。

参数 `safe` 指定了是否在并发安全的上下文中使用此 Json 对象,默认情况下为 false。

func X创建并按选项

func X创建并按选项(值 interface{}, 选项 Options) *Json

NewWithOptions 创建一个Json对象,其变量类型可以是 `data` 的任意类型,但为了能够访问数据,`data` 应该是一个 map 或 slice,否则将毫无意义。

func X加载Properties

func X加载Properties(值 interface{}, 并发安全 ...bool) (*Json, error)

LoadProperties 从给定的TOML格式内容创建一个Json对象。

func X加载Toml

func X加载Toml(值 interface{}, 并发安全 ...bool) (*Json, error)

LoadToml 从给定的TOML格式内容创建一个Json对象。

func X加载Yaml

func X加载Yaml(值 interface{}, 并发安全 ...bool) (*Json, error)

LoadYaml 从给定的YAML格式内容创建一个Json对象。

func X加载ini

func X加载ini(值 interface{}, 并发安全 ...bool) (*Json, error)

LoadIni 从给定的 INI 格式内容创建一个 Json 对象。

func X加载json

func X加载json(值 interface{}, 并发安全 ...bool) (*Json, error)

LoadJson 从给定的 JSON 格式内容创建一个 Json 对象。

func X加载xml

func X加载xml(值 interface{}, 并发安全 ...bool) (*Json, error)

LoadXml 从给定的 XML 格式内容创建一个 Json 对象。

func X加载并按格式

func X加载并按格式(类型标签 ContentType, 值 interface{}, 并发安全 ...bool) (*Json, error)

LoadContentType 从给定的类型和内容创建一个 Json 对象, 支持以下数据内容类型: JSON、XML、INI、YAML 和 TOML。

func X加载并按选项

func X加载并按选项(值 interface{}, 选项 Options) (*Json, error)

LoadWithOptions 根据给定的JSON格式内容和选项,创建一个Json对象。

func X加载并自动识别格式

func X加载并自动识别格式(值 interface{}, 并发安全 ...bool) (*Json, error)

LoadContent 从给定的内容创建一个 Json 对象,它会自动检查 `content` 的数据类型, 支持以下数据内容类型: JSON、XML、INI、YAML 和 TOML。

func X加载文件

func X加载文件(路径 string, 并发安全 ...bool) (*Json, error)

Load 从指定的文件路径`path`加载内容,并根据其内容创建一个Json对象。

func X解码到json

func X解码到json(值 interface{}, 选项 ...Options) (*Json, error)

DecodeToJson将json格式的`data`解码成一个Json对象。 参数`data`可以是字节类型或字符串类型。

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

func (j Json) MarshalJSON() ([]byte, error)

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) String

func (j *Json) String() string

String 将当前Json对象以字符串形式返回。

func (*Json) UnmarshalJSON

func (j *Json) UnmarshalJSON(b []byte) error

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

func (j *Json) UnmarshalValue(value interface{}) error

UnmarshalValue 是一个接口实现,用于为 Json 设置任意类型的值。

func (*Json) X删除

func (j *Json) X删除(表达式 string) error

Remove 删除具有指定 `pattern` 的值。 它支持通过默认为 '.' 的字符分隔符进行层级数据访问。

func (*Json) X删除PANI

func (j *Json) X删除PANI(表达式 string)

MustRemove 的行为与 Remove 相同,但是当发生任何错误时,它会触发 panic(异常)。

func (*Json) X加入

func (j *Json) X加入(表达式 string, 值 interface{}) error

Append 函数通过指定的 `pattern` 追加值到目标值中。 通过 `pattern` 所获取的目标值应当是切片类型。

func (*Json) X加入PANI

func (j *Json) X加入PANI(表达式 string, 值 interface{})

MustAppend 的行为与 Append 相同,但当发生任何错误时,它会触发panic(异常)。

func (*Json) X取Map

func (j *Json) X取Map() map[string]interface{}

Map 将当前的 Json 对象转换为 map[string]interface{} 类型。 如果转换失败,则返回 nil。

func (*Json) X取MapStrAny

func (j *Json) X取MapStrAny() map[string]interface{}

MapStrAny 实现了接口函数 MapStrAny()。

func (*Json) X取TOML字节集

func (j *Json) X取TOML字节集() ([]byte, error)

func (*Json) X取TOML字节集PANI

func (j *Json) X取TOML字节集PANI() []byte

func (*Json) X取TOML文本

func (j *Json) X取TOML文本() (string, error)

func (*Json) X取TOML文本PANI

func (j *Json) X取TOML文本PANI() string

func (*Json) X取YAML字节集

func (j *Json) X取YAML字节集() ([]byte, error)

func (*Json) X取YAML字节集PANI

func (j *Json) X取YAML字节集PANI() []byte

func (*Json) X取YAML字节集并格式化

func (j *Json) X取YAML字节集并格式化(缩进 string) ([]byte, error)

func (*Json) X取YAML文本

func (j *Json) X取YAML文本() (string, error)

func (*Json) X取YAML文本PANI

func (j *Json) X取YAML文本PANI() string

func (*Json) X取any数组

func (j *Json) X取any数组() []interface{}

Interfaces 实现了接口函数 Interfaces()。

func (*Json) X取ini字节集

func (j *Json) X取ini字节集() ([]byte, error)

ToIni json to ini

func (*Json) X取ini字节集PANI

func (j *Json) X取ini字节集PANI() []byte

func (*Json) X取ini文本

func (j *Json) X取ini文本() (string, error)

ToIniString 将ini转换为字符串

func (*Json) X取ini文本PANI

func (j *Json) X取ini文本PANI() string

MustToIniString .

func (*Json) X取json字节集

func (j *Json) X取json字节集() ([]byte, error)

func (*Json) X取json字节集PANI

func (j *Json) X取json字节集PANI() []byte

func (*Json) X取json字节集并格式化

func (j *Json) X取json字节集并格式化() ([]byte, error)

func (*Json) X取json字节集并格式化PANI

func (j *Json) X取json字节集并格式化PANI() []byte

func (*Json) X取json文本

func (j *Json) X取json文本() (string, error)

func (*Json) X取json文本PANI

func (j *Json) X取json文本PANI() string

func (*Json) X取json文本并格式化

func (j *Json) X取json文本并格式化() (string, error)

func (*Json) X取json文本并格式化PANI

func (j *Json) X取json文本并格式化PANI() string

func (*Json) X取properties字节集

func (j *Json) X取properties字节集() ([]byte, error)

========================================================================== 属性 ========================================================================== 将JSON转换为属性

func (*Json) X取properties字节集PANI

func (j *Json) X取properties字节集PANI() []byte

func (*Json) X取properties文本

func (j *Json) X取properties文本() (string, error)

TopropertiesString 将属性转换为字符串

func (*Json) X取properties文本PANI

func (j *Json) X取properties文本PANI() string

MustToPropertiesString

func (*Json) X取xml字节集

func (j *Json) X取xml字节集(rootTag ...string) ([]byte, error)

func (*Json) X取xml字节集PANI

func (j *Json) X取xml字节集PANI(rootTag ...string) []byte

func (*Json) X取xml字节集并格式化

func (j *Json) X取xml字节集并格式化(rootTag ...string) ([]byte, error)

func (*Json) X取xml字节集并格式化PANI

func (j *Json) X取xml字节集并格式化PANI(rootTag ...string) []byte

func (*Json) X取xml文本

func (j *Json) X取xml文本(rootTag ...string) (string, error)

func (*Json) X取xml文本PANI

func (j *Json) X取xml文本PANI(rootTag ...string) string

func (*Json) X取xml文本并格式化

func (j *Json) X取xml文本并格式化(rootTag ...string) (string, error)

func (*Json) X取xml文本并格式化PANI

func (j *Json) X取xml文本并格式化PANI(rootTag ...string) string

func (*Json) X取值

func (j *Json) X取值(表达式 string, 默认值 ...interface{}) *泛型类.Var

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取对象(表达式 string, 默认值 ...interface{}) *Json

GetJson 通过指定的 `pattern` 获取值, 并将其转换为一个非并发安全的 Json 对象。

func (*Json) X取对象Map

func (j *Json) X取对象Map(表达式 string, 默认值 ...interface{}) map[string]*Json

GetJsonMap 通过指定的 `pattern` 获取值, 并将其转换为一个非并发安全的 Json 对象映射。

func (*Json) X取对象数组

func (j *Json) X取对象数组(表达式 string, 默认值 ...interface{}) []*Json

GetJsons 通过指定的 `pattern` 获取值, 并将其转换为一个非并发安全的 Json 对象切片。

func (*Json) X取数组

func (j *Json) X取数组() []interface{}

Array 将当前Json对象转换为 []interface{} 类型的切片。 如果转换失败,则返回nil。

func (*Json) X取文本

func (j *Json) X取文本() string

字符串返回当前Json对象作为字符串

func (*Json) X取泛型类

func (j *Json) X取泛型类() *泛型类.Var

Var 返回json值作为*gvar.Var类型。

func (*Json) X取结构体指针

func (j *Json) X取结构体指针(结构体指针 interface{}, 名称映射 ...map[string]string) error

Scan 会根据参数 `pointer` 的类型自动调用 Struct 或 Structs 函数来实现转换功能。

func (*Json) X取长度

func (j *Json) X取长度(表达式 string) int

Len 通过指定的 `pattern` 返回值的长度/大小。 通过 `pattern` 所获取的目标值应为切片或字典类型。 若目标值未找到,或者其类型无效,则返回 -1。

func (*Json) X是否为Nil

func (j *Json) X是否为Nil() bool

IsNil 检查通过 `j` 指向的值是否为 nil。

func (*Json) X是否存在

func (j *Json) X是否存在(表达式 string) bool

Contains 检查指定的 `pattern` 是否存在对应的值。

func (*Json) X设置值

func (j *Json) X设置值(表达式 string, 值 interface{}) error

Set 使用指定的`pattern`设置值。 它支持通过默认为'.'的字符分隔符进行层级数据访问。

func (*Json) X设置值PANI

func (j *Json) X设置值PANI(表达式 string, 值 interface{})

MustSet 表现如同 Set,但当发生任何错误时会触发panic(异常)。

func (*Json) X设置分层冲突检查

func (j *Json) X设置分层冲突检查(启用 bool)

SetViolenceCheck 设置是否对层级数据访问进行暴力检查。

func (*Json) X设置参数分隔符

func (j *Json) X设置参数分隔符(分隔符 byte)

SetSplitChar 设置分隔符字符,用于层级数据访问。

func (*Json) X调试输出

func (j *Json) X调试输出()

Dump 打印当前Json对象,使其更易于人工阅读。

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对象创建/加载的选项。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL