以下常用方法列表,文档更新可能滞后于代码新特性,更多的方法及示例请参考代码文档:https://pkg.go.dev/github.com/gogf/gf/v2/encoding/gjson

New

  • 说明:New可以用任意类型的值data创建一个Json对象,但是由于数据访问的关系,data应该是一个map或者slice,否则是无意义的。

  • 注意:safe参数决定了Json对象是否是并发安全的,默认为false

  • 格式:

    1. func New(data interface{}, safe ...bool) *Json
  • 示例:

    1. func ExampleNew() {
    2. jsonContent := `{"name":"john", "score":"100"}`
    3. j := gjson.New(jsonContent)
    4. fmt.Println(j.Get("name"))
    5. fmt.Println(j.Get("score"))
    6. // Output:
    7. // john
    8. // 100
    9. }

NewWithTag

  • 说明:NewWithTag可以用任意类型的值data创建一个Json对象,但是由于数据访问的关系,data应该是一个map或者slice,否则是无意义的。

  • 注意:tgts参数指定了结构体转换到map的标签名的优先级,多个标签用','分割。

  • safe参数决定了Json对象是否是并发安全的,默认为false
  • 格式:

    1. func NewWithTag(data interface{}, tags string, safe ...bool) *Json
  • 示例:

    1. func ExampleNewWithTag() {
    2. type Me struct {
    3. Name string `tag:"name"`
    4. Score int `tag:"score"`
    5. Title string
    6. }
    7. me := Me{
    8. Name: "john",
    9. Score: 100,
    10. Title: "engineer",
    11. }
    12. j := gjson.NewWithTag(me, "tag", true)
    13. fmt.Println(j.Get("name"))
    14. fmt.Println(j.Get("score"))
    15. fmt.Println(j.Get("Title"))
    16. // Output:
    17. // john
    18. // 100
    19. // engineer
    20. }

NewWithOptions

  • 说明:NewWithOptions可以用任意类型的值data创建一个Json对象,但是由于数据访问的关系,data应该是一个map或者slice,否则是无意义的。

  • 格式:

    1. func NewWithOptions(data interface{}, options Options) *Json
  • 示例:

    1. func ExampleNewWithOptions() {
    2. type Me struct {
    3. Name string `tag:"name"`
    4. Score int `tag:"score"`
    5. Title string
    6. }
    7. me := Me{
    8. Name: "john",
    9. Score: 100,
    10. Title: "engineer",
    11. }
    12. j := gjson.NewWithOptions(me, gjson.Options{
    13. Tags: "tag",
    14. })
    15. fmt.Println(j.Get("name"))
    16. fmt.Println(j.Get("score"))
    17. fmt.Println(j.Get("Title"))
    18. // Output:
    19. // john
    20. // 100
    21. // engineer
    22. }
    1. func ExampleNewWithOptions_UTF8BOM() {
    2. jsonContent := `{"name":"john", "score":"100"}`
    3. content := make([]byte, 3, len(jsonContent)+3)
    4. content[0] = 0xEF
    5. content[1] = 0xBB
    6. content[2] = 0xBF
    7. content = append(content, jsonContent...)
    8. j := gjson.NewWithOptions(content, gjson.Options{
    9. Tags: "tag",
    10. })
    11. fmt.Println(j.Get("name"))
    12. fmt.Println(j.Get("score"))
    13. // Output:
    14. // john
    15. // 100
    16. }

Load

  • 说明: Load从指定的文件path中加载内容,并将其内容创建一个Json对象。

  • 格式:

    1. func Load(path string, safe ...bool) (*Json, error)
  • 示例:

    1. func ExampleLoad() {
    2. jsonFilePath := gtest.DataPath("json", "data1.json")
    3. j, _ := gjson.Load(jsonFilePath)
    4. fmt.Println(j.Get("name"))
    5. fmt.Println(j.Get("score"))
    6. notExistFilePath := gtest.DataPath("json", "data2.json")
    7. j2, _ := gjson.Load(notExistFilePath)
    8. fmt.Println(j2.Get("name"))
    9. // Output:
    10. // john
    11. // 100
    12. }
    1. func ExampleLoad_Xml() {
    2. jsonFilePath := gtest.DataPath("xml", "data1.xml")
    3. j, _ := gjson.Load(jsonFilePath)
    4. fmt.Println(j.Get("doc.name"))
    5. fmt.Println(j.Get("doc.score"))
    6. }

LoadJson

  • 说明:LoadJson用给定的JSON格式的内容创建一个Json对象。

  • 格式:

    1. func LoadJson(data interface{}, safe ...bool) (*Json, error)
  • 示例:

    1. func ExampleLoadJson() {
    2. jsonContent := `{"name":"john", "score":"100"}`
    3. j, _ := gjson.LoadJson(jsonContent)
    4. fmt.Println(j.Get("name"))
    5. fmt.Println(j.Get("score"))
    6. // Output:
    7. // john
    8. // 100
    9. }

LoadXml

  • 说明:LoadXml用给定的XML格式的内容创建一个Json对象。

  • 格式:

    1. func LoadXml(data interface{}, safe ...bool) (*Json, error)
  • 示例:

    1. func ExampleLoadXml() {
    2. xmlContent := `<?xml version="1.0" encoding="UTF-8"?>
    3. <base>
    4. <name>john</name>
    5. <score>100</score>
    6. </base>`
    7. j, _ := gjson.LoadXml(xmlContent)
    8. fmt.Println(j.Get("base.name"))
    9. fmt.Println(j.Get("base.score"))
    10. // Output:
    11. // john
    12. // 100
    13. }

LoadIni

  • 说明:LoadIni用给定的INI格式的内容创建一个Json对象。

  • 格式:

    1. func LoadIni(data interface{}, safe ...bool) (*Json, error)
  • 示例:

    1. func ExampleLoadIni() {
    2. iniContent := `
    3. [base]
    4. name = john
    5. score = 100
    6. `
    7. j, _ := gjson.LoadIni(iniContent)
    8. fmt.Println(j.Get("base.name"))
    9. fmt.Println(j.Get("base.score"))
    10. // Output:
    11. // john
    12. // 100
    13. }

LoadYaml

  • 说明:LoadYaml用给定的YAML格式的内容创建一个Json对象。

  • 格式:

    1. func LoadYaml(data interface{}, safe ...bool) (*Json, error)
  • 示例:

    1. func ExampleLoadYaml() {
    2. yamlContent :=
    3. `base:
    4. name: john
    5. score: 100`
    6. j, _ := gjson.LoadYaml(yamlContent)
    7. fmt.Println(j.Get("base.name"))
    8. fmt.Println(j.Get("base.score"))
    9. // Output:
    10. // john
    11. // 100
    12. }

LoadToml

  • 说明:LoadToml用给定的TOML格式的内容创建一个Json对象。

  • 格式:

    1. func LoadToml(data interface{}, safe ...bool) (*Json, error)
  • 示例:

    1. func ExampleLoadToml() {
    2. tomlContent :=
    3. `[base]
    4. name = "john"
    5. score = 100`
    6. j, _ := gjson.LoadToml(tomlContent)
    7. fmt.Println(j.Get("base.name"))
    8. fmt.Println(j.Get("base.score"))
    9. // Output:
    10. // john
    11. // 100
    12. }

LoadContent

  • 说明:LoadContent根据给定的内容创建一个Json对象,它自动检查content的数据类型,支持的内容类型如下:JSON, XML, INI, YAML和TOML

  • 格式:

    1. func LoadContent(data interface{}, safe ...bool) (*Json, error)
  • 示例:

    1. func ExampleLoadContent() {
    2. jsonContent := `{"name":"john", "score":"100"}`
    3. j, _ := gjson.LoadContent(jsonContent)
    4. fmt.Println(j.Get("name"))
    5. fmt.Println(j.Get("score"))
    6. // Output:
    7. // john
    8. // 100
    9. }
    1. func ExampleLoadContent_UTF8BOM() {
    2. jsonContent := `{"name":"john", "score":"100"}`
    3. content := make([]byte, 3, len(jsonContent)+3)
    4. content[0] = 0xEF
    5. content[1] = 0xBB
    6. content[2] = 0xBF
    7. content = append(content, jsonContent...)
    8. j, _ := gjson.LoadContent(content)
    9. fmt.Println(j.Get("name"))
    10. fmt.Println(j.Get("score"))
    11. // Output:
    12. // john
    13. // 100
    14. }
    1. func ExampleLoadContent_Xml() {
    2. xmlContent := `<?xml version="1.0" encoding="UTF-8"?>
    3. <base>
    4. <name>john</name>
    5. <score>100</score>
    6. </base>`
    7. x, _ := gjson.LoadContent(xmlContent)
    8. fmt.Println(x.Get("base.name"))
    9. fmt.Println(x.Get("base.score"))
    10. // Output:
    11. // john
    12. // 100
    13. }

LoadContentType

  • 说明:LoadContentType根据给定的内容和类型创建一个Json对象,支持的内容类型如下:Json, XML, INI, YAML和TOML

  • 格式:

    1. func LoadContentType(dataType string, data interface{}, safe ...bool) (*Json, error)
  • 示例:

    1. func ExampleLoadContentType() {
    2. jsonContent := `{"name":"john", "score":"100"}`
    3. xmlContent := `<?xml version="1.0" encoding="UTF-8"?>
    4. <base>
    5. <name>john</name>
    6. <score>100</score>
    7. </base>`
    8. j, _ := gjson.LoadContentType("json", jsonContent)
    9. x, _ := gjson.LoadContentType("xml", xmlContent)
    10. j1, _ := gjson.LoadContentType("json", "")
    11. fmt.Println(j.Get("name"))
    12. fmt.Println(j.Get("score"))
    13. fmt.Println(x.Get("base.name"))
    14. fmt.Println(x.Get("base.score"))
    15. fmt.Println(j1.Get(""))
    16. // Output:
    17. // john
    18. // 100
    19. // john
    20. // 100
    21. }

IsValidDataType

  • 说明:IsValidDataType检查给定的dataType是否是可以用于加载的有效数据内容。

  • 格式:

    1. func IsValidDataType(dataType string) bool
  • 示例:

    1. func ExampleIsValidDataType() {
    2. fmt.Println(gjson.IsValidDataType("json"))
    3. fmt.Println(gjson.IsValidDataType("yml"))
    4. fmt.Println(gjson.IsValidDataType("js"))
    5. fmt.Println(gjson.IsValidDataType("mp4"))
    6. fmt.Println(gjson.IsValidDataType("xsl"))
    7. fmt.Println(gjson.IsValidDataType("txt"))
    8. fmt.Println(gjson.IsValidDataType(""))
    9. fmt.Println(gjson.IsValidDataType(".json"))
    10. // Output:
    11. // true
    12. // true
    13. // true
    14. // false
    15. // false
    16. // false
    17. // false
    18. // true
    19. }

Valid

  • 说明:Valid检查data是否为有效的JSON数据类型。 参数data指定JSON格式数据,可以是bytesstring类型。

  • 格式:

    1. func Valid(data interface{}) bool
  • 示例:

    1. func ExampleValid() {
    2. data1 := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`)
    3. data2 := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]`)
    4. fmt.Println(gjson.Valid(data1))
    5. fmt.Println(gjson.Valid(data2))
    6. // Output:
    7. // true
    8. // false
    9. }

Marshal

  • 说明:MarshalEncode的别名。

  • 格式:

    1. func Marshal(v interface{}) (marshaledBytes []byte, err error)
  • 示例:

    1. func ExampleMarshal() {
    2. data := map[string]interface{}{
    3. "name": "john",
    4. "score": 100,
    5. }
    6. jsonData, _ := gjson.Marshal(data)
    7. fmt.Println(string(jsonData))
    8. type BaseInfo struct {
    9. Name string
    10. Age int
    11. }
    12. info := BaseInfo{
    13. Name: "Guo Qiang",
    14. Age: 18,
    15. }
    16. infoData, _ := gjson.Marshal(info)
    17. fmt.Println(string(infoData))
    18. // Output:
    19. // {"name":"john","score":100}
    20. // {"Name":"Guo Qiang","Age":18}
    21. }

MarshalIndent

  • 说明:MarshalIndentjson.MarshalIndent的别名 。

  • 格式:

    1. func MarshalIndent(v interface{}, prefix, indent string) (marshaledBytes []byte, err error)
  • 示例:

    1. func ExampleMarshalIndent() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. infoData, _ := gjson.MarshalIndent(info, "", "\t")
    11. fmt.Println(string(infoData))
    12. // Output:
    13. // {
    14. // "Name": "John",
    15. // "Age": 18
    16. // }
    17. }

Unmarshal

  • 说明:UnmarshalDecodeTo的别名。

  • 格式:

    1. func Unmarshal(data []byte, v interface{}) (err error)
  • 示例:

    1. func ExampleUnmarshal() {
    2. type BaseInfo struct {
    3. Name string
    4. Score int
    5. }
    6. var info BaseInfo
    7. jsonContent := "{\"name\":\"john\",\"score\":100}"
    8. gjson.Unmarshal([]byte(jsonContent), &info)
    9. fmt.Printf("%+v", info)
    10. // Output:
    11. // {Name:john Score:100}
    12. }

Encode

  • 说明:Encode将任意类型value序列化为内容为JSONbyte数组。

  • 格式:

    1. func Encode(value interface{}) ([]byte, error)
  • 示例:

    1. func ExampleEncode() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. infoData, _ := gjson.Encode(info)
    11. fmt.Println(string(infoData))
    12. // Output:
    13. // {"Name":"John","Age":18}
    14. }

MustEncode

  • 说明:MustEncode执行Encode操作,但如果发生任何错误,它会panic

  • 格式:

    1. func MustEncode(value interface{}) []byte
  • 示例:

    1. func ExampleMustEncode() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. infoData := gjson.MustEncode(info)
    11. fmt.Println(string(infoData))
    12. // Output:
    13. // {"Name":"John","Age":18}
    14. }

EncodeString

  • 说明:EncodeString将任意类型value序列化为内容为JSONstring

  • 格式:

    1. func EncodeString(value interface{}) (string, error)
  • 示例:

    1. func ExampleEncodeString() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. infoData, _ := gjson.EncodeString(info)
    11. fmt.Println(infoData)
    12. // Output:
    13. // {"Name":"John","Age":18}
    14. }

MustEncodeString

  • 说明:MustEncodeString将任意类型value序列化为内容为JSONstring,但如果发生任何错误,它会panic

  • 格式:

    1. func MustEncodeString(value interface{}) string
  • 示例:

    1. func ExampleMustEncodeString() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. infoData := gjson.MustEncodeString(info)
    11. fmt.Println(infoData)
    12. // Output:
    13. // {"Name":"John","Age":18}
    14. }

Decode

  • 说明:DecodeJSON格式的内容data解码为interface{}。 参数data可以是[]bytestring

  • 格式:

    1. func Decode(data interface{}, options ...Options) (interface{}, error)
  • 示例:

    1. func ExampleDecode() {
    2. jsonContent := `{"name":"john","score":100}`
    3. info, _ := gjson.Decode([]byte(jsonContent))
    4. fmt.Println(info)
    5. // Output:
    6. // map[name:john score:100]
    7. }

DecodeTo

  • 说明:DecodeToJSON格式的数据data解码到指定的interface类型的变量v中。参数data可以是[]bytestring。参数v应该是指针类型。

  • 格式:

    1. func DecodeTo(data interface{}, v interface{}, options ...Options) (err error)
  • 示例:

    1. func ExampleDecodeTo() {
    2. type BaseInfo struct {
    3. Name string
    4. Score int
    5. }
    6. var info BaseInfo
    7. jsonContent := "{\"name\":\"john\",\"score\":100}"
    8. gjson.DecodeTo([]byte(jsonContent), &info)
    9. fmt.Printf("%+v", info)
    10. // Output:
    11. // {Name:john Score:100}
    12. }

DecodeToJson

  • 说明:DecodeToJsonJSON格式的数据data编码为json对象。参数data可以是[]bytestring

  • 格式:

    1. func DecodeToJson(data interface{}, options ...Options) (*Json, error)
  • 示例:

    1. func ExampleDecodeToJson() {
    2. jsonContent := `{"name":"john","score":100}"`
    3. j, _ := gjson.DecodeToJson([]byte(jsonContent))
    4. fmt.Println(j.Map())
    5. // May Output:
    6. // map[name:john score:100]
    7. }

SetSplitChar

  • 说明:SetSplitChar设置数据访问的层级分隔符。

  • 格式:

    1. func (j *Json) SetSplitChar(char byte)
  • 示例:

    1. func ExampleJson_SetSplitChar() {
    2. data :=
    3. `{
    4. "users" : {
    5. "count" : 2,
    6. "list" : [
    7. {"name" : "Ming", "score" : 60},
    8. {"name" : "John", "score" : 99.5}
    9. ]
    10. }
    11. }`
    12. if j, err := gjson.DecodeToJson(data); err != nil {
    13. panic(err)
    14. } else {
    15. j.SetSplitChar('#')
    16. fmt.Println("John Score:", j.Get("users#list#1#score").Float32())
    17. }
    18. // Output:
    19. // John Score: 99.5
    20. }

SetViolenceCheck

  • 说明:SetViolenceCheck启用/禁用数据层级访问的暴力检查。

  • 格式:

    1. func (j *Json) SetViolenceCheck(enabled bool)
  • 示例:

    1. func ExampleJson_SetViolenceCheck() {
    2. data :=
    3. `{
    4. "users" : {
    5. "count" : 100
    6. },
    7. "users.count" : 101
    8. }`
    9. if j, err := gjson.DecodeToJson(data); err != nil {
    10. fmt.Println(err)
    11. } else {
    12. j.SetViolenceCheck(true)
    13. fmt.Println("Users Count:", j.Get("users.count"))
    14. }
    15. // Output:
    16. // Users Count: 101
    17. }

ToJson

  • 说明:ToJson返回类型为[]byteJSON内容。

  • 格式:

    1. func (j *Json) ToJson() ([]byte, error)
  • 示例:

    1. func ExampleJson_ToJson() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. jsonBytes, _ := j.ToJson()
    12. fmt.Println(string(jsonBytes))
    13. // Output:
    14. // {"Age":18,"Name":"John"}
    15. }

ToJsonString

  • 说明:ToJsonString返回类型为stringJSON内容。

  • 格式:

    1. func (j *Json) ToJsonString() (string, error)
  • 示例:

    1. func ExampleJson_ToJsonString() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. jsonStr, _ := j.ToJsonString()
    12. fmt.Println(jsonStr)
    13. // Output:
    14. // {"Age":18,"Name":"John"}
    15. }

ToJsonIndent

  • 说明:ToJsonIndent返回类型为[]byte的带缩进格式的JSON内容。

  • 格式:

    1. func (j *Json) ToJsonIndent() ([]byte, error)
  • 示例:

    1. func ExampleJson_ToJsonIndent() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. jsonBytes, _ := j.ToJsonIndent()
    12. fmt.Println(string(jsonBytes))
    13. // Output:
    14. //{
    15. // "Age": 18,
    16. // "Name": "John"
    17. //}
    18. }

ToJsonIndentString

  • 说明:ToJsonIndentString返回类型为string的带缩进格式的JSON内容。

  • 格式:

    1. func (j *Json) ToJsonIndentString() (string, error)
  • 示例:

    1. func ExampleJson_ToJsonIndentString() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. jsonStr, _ := j.ToJsonIndentString()
    12. fmt.Println(jsonStr)
    13. // Output:
    14. //{
    15. // "Age": 18,
    16. // "Name": "John"
    17. //}
    18. }

MustToJson

  • 说明:MustToJson返回类型为[]byteJSON内容,如果发生任何错误,会发生panic

  • 格式:

    1. func (j *Json) MustToJson() []byte
  • 示例:

    1. func ExampleJson_MustToJson() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. jsonBytes := j.MustToJson()
    12. fmt.Println(string(jsonBytes))
    13. // Output:
    14. // {"Age":18,"Name":"John"}
    15. }

MustToJsonString

  • 说明:MustToJsonString返回类型为stringJSON内容,如果发生任何错误,会发生panic

  • 格式:

    1. func (j *Json) MustToJsonString() string
  • 示例:

    1. func ExampleJson_MustToJsonString() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. jsonStr := j.MustToJsonString()
    12. fmt.Println(jsonStr)
    13. // Output:
    14. // {"Age":18,"Name":"John"}
    15. }

MustToJsonIndent

  • 说明:MustToJsonStringIndent返回类型为[]byte的带缩进格式的JSON内容,如果发生任何错误,会发生panic

  • 格式:

    1. func (j *Json) MustToJsonIndent() []byte
  • 示例:

    1. func ExampleJson_MustToJsonIndent() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. jsonBytes := j.MustToJsonIndent()
    12. fmt.Println(string(jsonBytes))
    13. // Output:
    14. //{
    15. // "Age": 18,
    16. // "Name": "John"
    17. //}
    18. }

MustToJsonIndentString

  • 说明:MustToJsonStringIndent返回类型为string的带缩进格式的JSON内容,如果发生任何错误,会发生panic

  • 格式:

    1. func (j *Json) MustToJsonIndentString() string
  • 示例:

    1. func ExampleJson_MustToJsonIndentString() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. jsonStr := j.MustToJsonIndentString()
    12. fmt.Println(jsonStr)
    13. // Output:
    14. //{
    15. // "Age": 18,
    16. // "Name": "John"
    17. //}
    18. }

ToXml

  • 说明:ToXml返回类型为[]byte格式为XML的内容。

  • 格式:

    1. func (j *Json) ToXml(rootTag ...string) ([]byte, error)
  • 示例:

    1. func ExampleJson_ToXml() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. xmlBytes, _ := j.ToXml()
    12. fmt.Println(string(xmlBytes))
    13. // Output:
    14. // <doc><Age>18</Age><Name>John</Name></doc>
    15. }

ToXmlString

  • 说明:ToXmlString返回类型为string格式为XML的内容。

  • 格式:

    1. func (j *Json) ToXmlString(rootTag ...string) (string, error)
  • 示例:

    1. func ExampleJson_ToXmlString() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. xmlStr, _ := j.ToXmlString()
    12. fmt.Println(string(xmlStr))
    13. // Output:
    14. // <doc><Age>18</Age><Name>John</Name></doc>
    15. }

ToXmlIndent

  • 说明:ToXmlIndent返回类型为[]byte的带缩进格式的XML内容。

  • 格式:

    1. func (j *Json) ToXmlIndent(rootTag ...string) ([]byte, error)
  • 示例:

    1. func ExampleJson_ToXmlIndent() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. xmlBytes, _ := j.ToXmlIndent()
    12. fmt.Println(string(xmlBytes))
    13. // Output:
    14. //<doc>
    15. // <Age>18</Age>
    16. // <Name>John</Name>
    17. //</doc>
    18. }

ToXmlIndentString

  • 说明:ToXmlIndentString返回类型为string的带缩进格式的XML内容。

  • 格式:

    1. func (j *Json) ToXmlIndentString(rootTag ...string) (string, error)
  • 示例:

    1. func ExampleJson_ToXmlIndentString() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. xmlStr, _ := j.ToXmlIndentString()
    12. fmt.Println(string(xmlStr))
    13. // Output:
    14. //<doc>
    15. // <Age>18</Age>
    16. // <Name>John</Name>
    17. //</doc>
    18. }

MustToXml

  • 说明:MustToXml返回类型为[]byte格式为XML的内容。如果发生任何错误,会发生panic

  • 格式:

    1. func (j *Json) MustToXml(rootTag ...string) []byte
  • 示例:

    1. func ExampleJson_MustToXml() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. xmlBytes := j.MustToXml()
    12. fmt.Println(string(xmlBytes))
    13. // Output:
    14. // <doc><Age>18</Age><Name>John</Name></doc>
    15. }

MustToXmlString

  • 说明:MustToXmlString返回类型为string格式为XML的内容。如果发生任何错误,会发生panic

  • 格式:

    1. func (j *Json) MustToXmlString(rootTag ...string) string
  • 示例:

    1. func ExampleJson_MustToXmlString() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. xmlStr := j.MustToXmlString()
    12. fmt.Println(string(xmlStr))
    13. // Output:
    14. // <doc><Age>18</Age><Name>John</Name></doc>
    15. }

MustToXmlIndent

  • 说明:MustToXmlStringIndent返回类型为[]byte带缩进格式的XML内容。如果发生任何错误,会发生panic

  • 格式:

    1. func (j *Json) MustToXmlIndent(rootTag ...string) []byte
  • 示例:

    1. func ExampleJson_MustToXmlIndent() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. xmlBytes := j.MustToXmlIndent()
    12. fmt.Println(string(xmlBytes))
    13. // Output:
    14. //<doc>
    15. // <Age>18</Age>
    16. // <Name>John</Name>
    17. //</doc>
    18. }

MustToXmlIndentString

  • 说明:MustToXmlStringIndentString返回类型为string带缩进格式的XML内容。如果发生任何错误,会发生panic

  • 格式:

    1. func (j *Json) MustToXmlIndentString(rootTag ...string) string
  • 示例:

    1. func ExampleJson_MustToXmlIndentString() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. xmlStr := j.MustToXmlIndentString()
    12. fmt.Println(string(xmlStr))
    13. // Output:
    14. //<doc>
    15. // <Age>18</Age>
    16. // <Name>John</Name>
    17. //</doc>
    18. }

ToYaml

  • 说明:ToYaml返回类型为[]byte格式为YAML的内容。

  • 格式:

    1. func (j *Json) ToYaml() ([]byte, error)
  • 示例:

    1. func ExampleJson_ToYaml() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. YamlBytes, _ := j.ToYaml()
    12. fmt.Println(string(YamlBytes))
    13. // Output:
    14. //Age: 18
    15. //Name: John
    16. }

ToYamlIndent

  • 说明:ToYamlIndent返回类型为[]byte带缩进格式的YAML内容。

  • 格式:

    1. func (j *Json) ToYamlIndent(indent string) ([]byte, error)
  • 示例:

    1. func ExampleJson_ToYamlIndent() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. YamlBytes, _ := j.ToYamlIndent("")
    12. fmt.Println(string(YamlBytes))
    13. // Output:
    14. //Age: 18
    15. //Name: John
    16. }

ToYamlString

  • 说明:ToYamlString返回类型为string格式为YAML的内容。

  • 格式:

    1. func (j *Json) ToYamlString() (string, error)
  • 示例:

    1. func ExampleJson_ToYamlString() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. YamlStr, _ := j.ToYamlString()
    12. fmt.Println(string(YamlStr))
    13. // Output:
    14. //Age: 18
    15. //Name: John
    16. }

MustToYaml

  • 说明:MustToYaml返回类型为[]byte格式为YAML的内容。如果发生任何错误,会发生panic

  • 格式:

    1. func (j *Json) MustToYaml() []byte
  • 示例:

    1. func ExampleJson_MustToYaml() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. YamlBytes := j.MustToYaml()
    12. fmt.Println(string(YamlBytes))
    13. // Output:
    14. //Age: 18
    15. //Name: John
    16. }

MustToYamlString

  • 说明:MustToYamlString返回类型为string格式为YAML的内容。如果发生任何错误,会发生panic

  • 格式:

    1. func (j *Json) MustToYamlString() string
  • 示例:

    1. func ExampleJson_MustToYamlString() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. YamlStr := j.MustToYamlString()
    12. fmt.Println(string(YamlStr))
    13. // Output:
    14. //Age: 18
    15. //Name: John
    16. }

ToToml

  • 说明:ToToml返回类型为[]byte格式为TOML的内容。

  • 格式:

    1. func (j *Json) ToToml() ([]byte, error)
  • 示例:

    1. func ExampleJson_ToToml() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. TomlBytes, _ := j.ToToml()
    12. fmt.Println(string(TomlBytes))
    13. // Output:
    14. //Age = 18
    15. //Name = "John"
    16. }

ToTomlString

  • 说明:ToTomlString返回类型为string格式为TOML的内容。

  • 格式:

    1. func (j *Json) ToTomlString() (string, error)
  • 示例:

    1. func ExampleJson_ToTomlString() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. TomlStr, _ := j.ToTomlString()
    12. fmt.Println(string(TomlStr))
    13. // Output:
    14. //Age = 18
    15. //Name = "John"
    16. }

MustToToml

  • 说明:MustToToml返回类型为[]byte格式为TOML的内容。如果发生任何错误,会发生panic

  • 格式:

    1. func (j *Json) MustToToml() []byte
  • 示例:

    1. func ExampleJson_MustToToml() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. TomlBytes := j.MustToToml()
    12. fmt.Println(string(TomlBytes))
    13. // Output:
    14. //Age = 18
    15. //Name = "John"
    16. }

MustToTomlString

  • 说明:MustToTomlString返回类型为string格式为TOML的内容。如果发生任何错误,会发生panic

  • 格式:

    1. func (j *Json) MustToTomlString() string
  • 示例:

    1. func ExampleJson_MustToTomlString() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. TomlStr := j.MustToTomlString()
    12. fmt.Println(string(TomlStr))
    13. // Output:
    14. //Age = 18
    15. //Name = "John"
    16. }

ToIni

  • 说明:ToIni返回类型为[]byte格式为INI的内容。

  • 格式:

    1. func (j *Json) ToIni() ([]byte, error)
  • 示例:

    1. func ExampleJson_ToIni() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. IniBytes, _ := j.ToIni()
    12. fmt.Println(string(IniBytes))
    13. // May Output:
    14. //Name=John
    15. //Age=18
    16. }

ToIniString

  • 说明:ToIniString返回类型为string格式为INI的内容。

  • 格式:

    1. func (j *Json) ToIniString() (string, error)
  • 示例:

    1. func ExampleJson_ToIniString() {
    2. type BaseInfo struct {
    3. Name string
    4. }
    5. info := BaseInfo{
    6. Name: "John",
    7. }
    8. j := gjson.New(info)
    9. IniStr, _ := j.ToIniString()
    10. fmt.Println(string(IniStr))
    11. // Output:
    12. //Name=John
    13. }

MustToIni

  • 说明:MustToIni返回类型为[]byte格式为INI的内容。如果发生任何错误,会发生panic

  • 格式:

    1. func (j *Json) MustToIni() []byte
  • 示例:

    1. func ExampleJson_MustToIni() {
    2. type BaseInfo struct {
    3. Name string
    4. }
    5. info := BaseInfo{
    6. Name: "John",
    7. }
    8. j := gjson.New(info)
    9. IniBytes := j.MustToIni()
    10. fmt.Println(string(IniBytes))
    11. // Output:
    12. //Name=John
    13. }

MustToIniString

  • 说明:MustToIniString返回类型为string格式为INI的内容。如果发生任何错误,会发生panic

  • 格式:

    1. func (j *Json) MustToIniString() string
  • 示例:

    1. func ExampleJson_MustToIniString() {
    2. type BaseInfo struct {
    3. Name string
    4. }
    5. info := BaseInfo{
    6. Name: "John",
    7. }
    8. j := gjson.New(info)
    9. IniStr := j.MustToIniString()
    10. fmt.Println(string(IniStr))
    11. // Output:
    12. //Name=John
    13. }

MarshalJSON

  • 说明:MarshalJSON实现了json.Marshal的接口MarshalJSON

  • 格式:

    1. func (j Json) MarshalJSON() ([]byte, error)
  • 示例:

    1. func ExampleJson_MarshalJSON() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. jsonBytes, _ := j.MarshalJSON()
    12. fmt.Println(string(jsonBytes))
    13. // Output:
    14. // {"Age":18,"Name":"John"}
    15. }

UnmarshalJSON

  • 说明:UnmarshalJSON 实现了``json.Unmarshal 的接口``UnmarshalJSON

  • 格式:

    1. func (j *Json) UnmarshalJSON(b []byte) error
  • 示例:

    1. func ExampleJson_UnmarshalJSON() {
    2. jsonStr := `{"Age":18,"Name":"John"}`
    3. j := gjson.New("")
    4. j.UnmarshalJSON([]byte(jsonStr))
    5. fmt.Println(j.Map())
    6. // Output:
    7. // map[Age:18 Name:John]
    8. }

UnmarshalValue

  • 说明:UnmarshalValue是一个为Json设置任何类型的值的接口实现。

  • 格式:

    1. func (j *Json) UnmarshalValue(value interface{}) error
  • 示例:

    1. func ExampleJson_UnmarshalValue_Yaml() {
    2. yamlContent :=
    3. `base:
    4. name: john
    5. score: 100`
    6. j := gjson.New("")
    7. j.UnmarshalValue([]byte(yamlContent))
    8. fmt.Println(j.Var().String())
    9. // Output:
    10. // {"base":{"name":"john","score":100}}
    11. }
    1. func ExampleJson_UnmarshalValue_Xml() {
    2. xmlStr := `<?xml version="1.0" encoding="UTF-8"?><doc><name>john</name><score>100</score></doc>`
    3. j := gjson.New("")
    4. j.UnmarshalValue([]byte(xmlStr))
    5. fmt.Println(j.Var().String())
    6. // Output:
    7. // {"doc":{"name":"john","score":"100"}}
    8. }

MapStrAny

  • 说明:MapStrAny实现了接口方法MapStrAny()

  • 格式:

    1. func (j *Json) MapStrAny() map[string]interface{}
  • 示例:

    1. func ExampleJson_MapStrAny() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. fmt.Println(j.MapStrAny())
    12. // Output:
    13. // map[Age:18 Name:John]
    14. }

Interfaces

  • 说明:Interfaces实现了接口方法Interfaces()

  • 格式:

    1. func (j *Json) Interfaces() []interface{}
  • 示例:

    1. func ExampleJson_Interfaces() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. infoList := []BaseInfo{
    7. BaseInfo{
    8. Name: "John",
    9. Age: 18,
    10. },
    11. BaseInfo{
    12. Name: "Tom",
    13. Age: 20,
    14. },
    15. }
    16. j := gjson.New(infoList)
    17. fmt.Println(j.Interfaces())
    18. // Output:
    19. // [{John 18} {Tom 20}]
    20. }

Interface

  • 说明:Interface返回Json对象的值。

  • 格式:

    1. func (j *Json) Interface() interface{}
  • 示例:

    1. func ExampleJson_Interface() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. fmt.Println(j.Interface())
    12. var nilJ *gjson.Json = nil
    13. fmt.Println(nilJ.Interface())
    14. // Output:
    15. // map[Age:18 Name:John]
    16. // <nil>
    17. }

Var

  • 说明:Var返回类型为*gvar.VarJson对象的值。

  • 格式:

    1. func (j *Json) Var() *gvar.Var
  • 示例:

    1. func ExampleJson_Var() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. fmt.Println(j.Var().String())
    12. fmt.Println(j.Var().Map())
    13. // Output:
    14. // {"Age":18,"Name":"John"}
    15. // map[Age:18 Name:John]
    16. }

IsNil

  • 说明:IsNil检查Json对象值是否为nil

  • 格式:

    1. func (j *Json) IsNil() bool
  • 示例:

    1. func ExampleJson_IsNil() {
    2. data1 := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`)
    3. data2 := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]`)
    4. j1, _ := gjson.LoadContent(data1)
    5. fmt.Println(j1.IsNil())
    6. j2, _ := gjson.LoadContent(data2)
    7. fmt.Println(j2.IsNil())
    8. // Output:
    9. // false
    10. // true
    11. }

Get

  • 说明:Get根据指定的pattern检索并返回值。如果pattern给的是".",将返回当前Json对象的所有值。没有pattern没有找到,则返回nil

  • 格式:

    1. func (j *Json) Get(pattern string, def ...interface{}) *gvar.Var
  • 示例:

    1. func ExampleJson_Get() {
    2. data :=
    3. `{
    4. "users" : {
    5. "count" : 1,
    6. "array" : ["John", "Ming"]
    7. }
    8. }`
    9. j, _ := gjson.LoadContent(data)
    10. fmt.Println(j.Get("."))
    11. fmt.Println(j.Get("users"))
    12. fmt.Println(j.Get("users.count"))
    13. fmt.Println(j.Get("users.array"))
    14. var nilJ *gjson.Json = nil
    15. fmt.Println(nilJ.Get("."))
    16. // Output:
    17. // {"users":{"array":["John","Ming"],"count":1}}
    18. // {"array":["John","Ming"],"count":1}
    19. // 1
    20. // ["John","Ming"]
    21. }

GetJson

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

  • 格式:

    1. func (j *Json) GetJson(pattern string, def ...interface{}) *Json
  • 示例:

    1. func ExampleJson_GetJson() {
    2. data :=
    3. `{
    4. "users" : {
    5. "count" : 1,
    6. "array" : ["John", "Ming"]
    7. }
    8. }`
    9. j, _ := gjson.LoadContent(data)
    10. fmt.Println(j.GetJson("users.array").Array())
    11. // Output:
    12. // [John Ming]
    13. }

GetJsons

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

  • 格式:

    1. func (j *Json) GetJsons(pattern string, def ...interface{}) []*Json
  • 示例:

    1. func ExampleJson_GetJsons() {
    2. data :=
    3. `{
    4. "users" : {
    5. "count" : 3,
    6. "array" : [{"Age":18,"Name":"John"}, {"Age":20,"Name":"Tom"}]
    7. }
    8. }`
    9. j, _ := gjson.LoadContent(data)
    10. jsons := j.GetJsons("users.array")
    11. for _, json := range jsons {
    12. fmt.Println(json.Interface())
    13. }
    14. // Output:
    15. // map[Age:18 Name:John]
    16. // map[Age:20 Name:Tom]
    17. }

GetJsonMap

  • 说明:GetJsonMap通过指定的pattern获取值,并将其转换为一个非并发安全的Json对象的map

  • 格式:

    1. func (j *Json) GetJsonMap(pattern string, def ...interface{}) map[string]*Json
  • 示例:

    1. func ExampleJson_GetJsonMap() {
    2. data :=
    3. `{
    4. "users" : {
    5. "count" : 1,
    6. "array" : {
    7. "info" : {"Age":18,"Name":"John"},
    8. "addr" : {"City":"Chengdu","Company":"Tencent"}
    9. }
    10. }
    11. }`
    12. j, _ := gjson.LoadContent(data)
    13. jsonMap := j.GetJsonMap("users.array")
    14. for _, json := range jsonMap {
    15. fmt.Println(json.Interface())
    16. }
    17. // May Output:
    18. // map[City:Chengdu Company:Tencent]
    19. // map[Age:18 Name:John]
    20. }

Set

  • 说明:Set设置指定pattern的值。 它默认支持通过字符'.'进行数据层级访问。

  • 格式:

    1. func (j *Json) Set(pattern string, value interface{}) error
  • 示例:

    1. func ExampleJson_Set() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. j.Set("Addr", "ChengDu")
    12. j.Set("Friends.0", "Tom")
    13. fmt.Println(j.Var().String())
    14. // Output:
    15. // {"Addr":"ChengDu","Age":18,"Friends":["Tom"],"Name":"John"}
    16. }

MustSet

  • 说明:MustSet执行Set,但如果有任何错误,会发生panic

  • 格式:

    1. func (j *Json) MustSet(pattern string, value interface{})
  • 示例:

    1. func ExampleJson_MustSet() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. j.MustSet("Addr", "ChengDu")
    12. fmt.Println(j.Var().String())
    13. // Output:
    14. // {"Addr":"ChengDu","Age":18,"Name":"John"}
    15. }

Remove

  • 说明:Remove删除指定pattern的值。 它默认支持通过字符'.'进行数据层级访问。

  • 格式:

    1. func (j *Json) Remove(pattern string) error
  • 示例:

    1. func ExampleJson_Remove() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. j.Remove("Age")
    12. fmt.Println(j.Var().String())
    13. // Output:
    14. // {"Name":"John"}
    15. }

MustRemove

  • 说明:MustRemove执行Remove,但如果有任何错误,会发生panic

  • 格式:

    1. func (j *Json) MustRemove(pattern string)
  • 示例:

    1. func ExampleJson_MustRemove() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. j.MustRemove("Age")
    12. fmt.Println(j.Var().String())
    13. // Output:
    14. // {"Name":"John"}
    15. }

Contains

  • 说明:Contains检查指定pattern的值是否存在。

  • 格式:

    1. func (j *Json) Contains(pattern string) bool
  • 示例:

    1. func ExampleJson_Contains() {
    2. type BaseInfo struct {
    3. Name string
    4. Age int
    5. }
    6. info := BaseInfo{
    7. Name: "John",
    8. Age: 18,
    9. }
    10. j := gjson.New(info)
    11. fmt.Println(j.Contains("Age"))
    12. fmt.Println(j.Contains("Addr"))
    13. // Output:
    14. // true
    15. // false
    16. }

Len

  • 说明:Len根据指定的pattern返回 值的长度/大小。 pattern的值应该是slicemap的类型。 如果找不到目标值或类型无效,则返回-1

  • 格式:

    1. func (j *Json) Len(pattern string) int
  • 示例:

    1. func ExampleJson_Len() {
    2. data :=
    3. `{
    4. "users" : {
    5. "count" : 1,
    6. "nameArray" : ["Join", "Tom"],
    7. "infoMap" : {
    8. "name" : "Join",
    9. "age" : 18,
    10. "addr" : "ChengDu"
    11. }
    12. }
    13. }`
    14. j, _ := gjson.LoadContent(data)
    15. fmt.Println(j.Len("users.nameArray"))
    16. fmt.Println(j.Len("users.infoMap"))
    17. // Output:
    18. // 2
    19. // 3
    20. }

Append

  • 说明:Append通过指定的pattern将值追加到Json对象中。 pattern的值的类型应该是slice

  • 格式:

    1. func (j *Json) Append(pattern string, value interface{}) error
  • 示例:

    1. func ExampleJson_Append() {
    2. data :=
    3. `{
    4. "users" : {
    5. "count" : 1,
    6. "array" : ["John", "Ming"]
    7. }
    8. }`
    9. j, _ := gjson.LoadContent(data)
    10. j.Append("users.array", "Lily")
    11. fmt.Println(j.Get("users.array").Array())
    12. // Output:
    13. // [John Ming Lily]
    14. }

MustAppend

  • 说明:MustAppend执行Append,但如果有任何错误,会发生panic

  • 格式:

    1. func (j *Json) MustAppend(pattern string, value interface{})
  • 示例:

    1. func ExampleJson_MustAppend() {
    2. data :=
    3. `{
    4. "users" : {
    5. "count" : 1,
    6. "array" : ["John", "Ming"]
    7. }
    8. }`
    9. j, _ := gjson.LoadContent(data)
    10. j.MustAppend("users.array", "Lily")
    11. fmt.Println(j.Get("users.array").Array())
    12. // Output:
    13. // [John Ming Lily]
    14. }

Map

  • 说明:Map将当前Json对象转换为map[string]interface{}。 如果失败,则返回nil

  • 格式:

    1. func (j *Json) Map() map[string]interface{}
  • 示例:

    1. func ExampleJson_Map() {
    2. data :=
    3. `{
    4. "users" : {
    5. "count" : 1,
    6. "info" : {
    7. "name" : "John",
    8. "age" : 18,
    9. "addr" : "ChengDu"
    10. }
    11. }
    12. }`
    13. j, _ := gjson.LoadContent(data)
    14. fmt.Println(j.Get("users.info").Map())
    15. // Output:
    16. // map[addr:ChengDu age:18 name:John]
    17. }

Array

  • 说明:Array将当前Json对象转换为[]interface{}。 如果失败,则返回nil

  • 格式:

    1. func (j *Json) Array() []interface{}
  • 示例:

    1. func ExampleJson_Array() {
    2. data :=
    3. `{
    4. "users" : {
    5. "count" : 1,
    6. "array" : ["John", "Ming"]
    7. }
    8. }`
    9. j, _ := gjson.LoadContent(data)
    10. fmt.Println(j.Get("users.array"))
    11. // Output:
    12. // ["John","Ming"]
    13. }

Scan

  • 说明:Scan自动调用StructStructs函数根据参数pointer的类型来进行转换。

  • 格式:

    1. func (j *Json) Scan(pointer interface{}, mapping ...map[string]string) error
  • 示例:

    1. func ExampleJson_Scan() {
    2. data := `{"name":"john","age":"18"}`
    3. type BaseInfo struct {
    4. Name string
    5. Age int
    6. }
    7. info := BaseInfo{}
    8. j, _ := gjson.LoadContent(data)
    9. j.Scan(&info)
    10. fmt.Println(info)
    11. // May Output:
    12. // {john 18}
    13. }

Dump

  • 说明:Dump以可读性更高的方式打印Json对象。

  • 格式:

    1. func (j *Json) Dump()
  • 示例:

    1. func ExampleJson_Dump() {
    2. data := `{"name":"john","age":"18"}`
    3. j, _ := gjson.LoadContent(data)
    4. j.Dump()
    5. // May Output:
    6. //{
    7. // "name": "john",
    8. // "age": "18",
    9. //}
    10. }