mirror of
https://gitee.com/johng/gf.git
synced 2024-12-02 04:07:47 +08:00
1189 lines
18 KiB
Go
1189 lines
18 KiB
Go
package gjson_test
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/gogf/gf/v2/encoding/gjson"
|
|
)
|
|
|
|
func ExampleJson_SetSplitChar() {
|
|
data :=
|
|
`{
|
|
"users" : {
|
|
"count" : 2,
|
|
"list" : [
|
|
{"name" : "Ming", "score" : 60},
|
|
{"name" : "John", "score" : 99.5}
|
|
]
|
|
}
|
|
}`
|
|
if j, err := gjson.DecodeToJson(data); err != nil {
|
|
panic(err)
|
|
} else {
|
|
j.SetSplitChar('#')
|
|
fmt.Println("John Score:", j.Get("users#list#1#score").Float32())
|
|
}
|
|
// Output:
|
|
// John Score: 99.5
|
|
}
|
|
|
|
func ExampleJson_SetViolenceCheck() {
|
|
data :=
|
|
`{
|
|
"users" : {
|
|
"count" : 100
|
|
},
|
|
"users.count" : 101
|
|
}`
|
|
if j, err := gjson.DecodeToJson(data); err != nil {
|
|
fmt.Println(err)
|
|
} else {
|
|
j.SetViolenceCheck(false)
|
|
fmt.Println("Users Count:", j.Get("users.count"))
|
|
j.SetViolenceCheck(true)
|
|
fmt.Println("Users Count:", j.Get("users.count"))
|
|
}
|
|
// Output:
|
|
// Users Count: 100
|
|
// Users Count: 101
|
|
}
|
|
|
|
// ========================================================================
|
|
// JSON
|
|
// ========================================================================
|
|
func ExampleJson_ToJson() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
jsonBytes, _ := j.ToJson()
|
|
fmt.Println(string(jsonBytes))
|
|
|
|
// Output:
|
|
// {"Age":18,"Name":"John"}
|
|
}
|
|
|
|
func ExampleJson_ToJsonString() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
jsonStr, _ := j.ToJsonString()
|
|
fmt.Println(jsonStr)
|
|
|
|
// Output:
|
|
// {"Age":18,"Name":"John"}
|
|
}
|
|
|
|
func ExampleJson_ToJsonIndent() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
jsonBytes, _ := j.ToJsonIndent()
|
|
fmt.Println(string(jsonBytes))
|
|
|
|
// Output:
|
|
// {
|
|
// "Age": 18,
|
|
// "Name": "John"
|
|
// }
|
|
}
|
|
|
|
func ExampleJson_ToJsonIndentString() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
jsonStr, _ := j.ToJsonIndentString()
|
|
fmt.Println(jsonStr)
|
|
|
|
// Output:
|
|
// {
|
|
// "Age": 18,
|
|
// "Name": "John"
|
|
// }
|
|
}
|
|
|
|
func ExampleJson_MustToJson() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
jsonBytes := j.MustToJson()
|
|
fmt.Println(string(jsonBytes))
|
|
|
|
// Output:
|
|
// {"Age":18,"Name":"John"}
|
|
}
|
|
|
|
func ExampleJson_MustToJsonString() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
jsonStr := j.MustToJsonString()
|
|
fmt.Println(jsonStr)
|
|
|
|
// Output:
|
|
// {"Age":18,"Name":"John"}
|
|
}
|
|
|
|
func ExampleJson_MustToJsonIndent() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
jsonBytes := j.MustToJsonIndent()
|
|
fmt.Println(string(jsonBytes))
|
|
|
|
// Output:
|
|
// {
|
|
// "Age": 18,
|
|
// "Name": "John"
|
|
// }
|
|
}
|
|
|
|
func ExampleJson_MustToJsonIndentString() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
jsonStr := j.MustToJsonIndentString()
|
|
fmt.Println(jsonStr)
|
|
|
|
// Output:
|
|
// {
|
|
// "Age": 18,
|
|
// "Name": "John"
|
|
// }
|
|
}
|
|
|
|
// ========================================================================
|
|
// XML
|
|
// ========================================================================
|
|
func ExampleJson_ToXml() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
xmlBytes, _ := j.ToXml()
|
|
fmt.Println(string(xmlBytes))
|
|
|
|
// Output:
|
|
// <doc><Age>18</Age><Name>John</Name></doc>
|
|
}
|
|
|
|
func ExampleJson_ToXmlString() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
xmlStr, _ := j.ToXmlString()
|
|
fmt.Println(string(xmlStr))
|
|
|
|
// Output:
|
|
// <doc><Age>18</Age><Name>John</Name></doc>
|
|
}
|
|
|
|
func ExampleJson_ToXmlIndent() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
xmlBytes, _ := j.ToXmlIndent()
|
|
fmt.Println(string(xmlBytes))
|
|
|
|
// Output:
|
|
// <doc>
|
|
// <Age>18</Age>
|
|
// <Name>John</Name>
|
|
// </doc>
|
|
}
|
|
|
|
func ExampleJson_ToXmlIndentString() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
xmlStr, _ := j.ToXmlIndentString()
|
|
fmt.Println(string(xmlStr))
|
|
|
|
// Output:
|
|
// <doc>
|
|
// <Age>18</Age>
|
|
// <Name>John</Name>
|
|
// </doc>
|
|
}
|
|
|
|
func ExampleJson_MustToXml() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
xmlBytes := j.MustToXml()
|
|
fmt.Println(string(xmlBytes))
|
|
|
|
// Output:
|
|
// <doc><Age>18</Age><Name>John</Name></doc>
|
|
}
|
|
|
|
func ExampleJson_MustToXmlString() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
xmlStr := j.MustToXmlString()
|
|
fmt.Println(string(xmlStr))
|
|
|
|
// Output:
|
|
// <doc><Age>18</Age><Name>John</Name></doc>
|
|
}
|
|
|
|
func ExampleJson_MustToXmlIndent() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
xmlBytes := j.MustToXmlIndent()
|
|
fmt.Println(string(xmlBytes))
|
|
|
|
// Output:
|
|
// <doc>
|
|
// <Age>18</Age>
|
|
// <Name>John</Name>
|
|
// </doc>
|
|
}
|
|
|
|
func ExampleJson_MustToXmlIndentString() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
xmlStr := j.MustToXmlIndentString()
|
|
fmt.Println(string(xmlStr))
|
|
|
|
// Output:
|
|
// <doc>
|
|
// <Age>18</Age>
|
|
// <Name>John</Name>
|
|
// </doc>
|
|
}
|
|
|
|
// ========================================================================
|
|
// YAML
|
|
// ========================================================================
|
|
func ExampleJson_ToYaml() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
YamlBytes, _ := j.ToYaml()
|
|
fmt.Println(string(YamlBytes))
|
|
|
|
// Output:
|
|
// Age: 18
|
|
// Name: John
|
|
}
|
|
|
|
func ExampleJson_ToYamlString() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
YamlStr, _ := j.ToYamlString()
|
|
fmt.Println(string(YamlStr))
|
|
|
|
// Output:
|
|
// Age: 18
|
|
// Name: John
|
|
}
|
|
|
|
func ExampleJson_ToYamlIndent() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
YamlBytes, _ := j.ToYamlIndent("")
|
|
fmt.Println(string(YamlBytes))
|
|
|
|
// Output:
|
|
// Age: 18
|
|
// Name: John
|
|
}
|
|
|
|
func ExampleJson_MustToYaml() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
YamlBytes := j.MustToYaml()
|
|
fmt.Println(string(YamlBytes))
|
|
|
|
// Output:
|
|
// Age: 18
|
|
// Name: John
|
|
}
|
|
|
|
func ExampleJson_MustToYamlString() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
YamlStr := j.MustToYamlString()
|
|
fmt.Println(string(YamlStr))
|
|
|
|
// Output:
|
|
// Age: 18
|
|
// Name: John
|
|
}
|
|
|
|
// ========================================================================
|
|
// TOML
|
|
// ========================================================================
|
|
func ExampleJson_ToToml() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
TomlBytes, _ := j.ToToml()
|
|
fmt.Println(string(TomlBytes))
|
|
|
|
// Output:
|
|
// Age = 18
|
|
// Name = "John"
|
|
}
|
|
|
|
func ExampleJson_ToTomlString() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
TomlStr, _ := j.ToTomlString()
|
|
fmt.Println(string(TomlStr))
|
|
|
|
// Output:
|
|
// Age = 18
|
|
// Name = "John"
|
|
}
|
|
|
|
func ExampleJson_MustToToml() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
TomlBytes := j.MustToToml()
|
|
fmt.Println(string(TomlBytes))
|
|
|
|
// Output:
|
|
// Age = 18
|
|
// Name = "John"
|
|
}
|
|
|
|
func ExampleJson_MustToTomlString() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
TomlStr := j.MustToTomlString()
|
|
fmt.Println(string(TomlStr))
|
|
|
|
// Output:
|
|
// Age = 18
|
|
// Name = "John"
|
|
}
|
|
|
|
// ========================================================================
|
|
// INI
|
|
// ========================================================================
|
|
func ExampleJson_ToIni() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
IniBytes, _ := j.ToIni()
|
|
fmt.Println(string(IniBytes))
|
|
|
|
// May Output:
|
|
// Name=John
|
|
// Age=18
|
|
}
|
|
|
|
func ExampleJson_ToIniString() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
IniStr, _ := j.ToIniString()
|
|
fmt.Println(string(IniStr))
|
|
|
|
// Output:
|
|
// Name=John
|
|
}
|
|
|
|
func ExampleJson_MustToIni() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
IniBytes := j.MustToIni()
|
|
fmt.Println(string(IniBytes))
|
|
|
|
// Output:
|
|
// Name=John
|
|
}
|
|
|
|
func ExampleJson_MustToIniString() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
IniStr := j.MustToIniString()
|
|
fmt.Println(string(IniStr))
|
|
|
|
// Output:
|
|
// Name=John
|
|
}
|
|
|
|
// ========================================================================
|
|
// Properties
|
|
// ========================================================================
|
|
func ExampleJson_ToProperties() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
pr, _ := j.ToProperties()
|
|
fmt.Println(string(pr))
|
|
|
|
// May Output:
|
|
// name = John
|
|
// age = 18
|
|
}
|
|
|
|
func ExampleJson_ToPropertiesString() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
pr, _ := j.ToPropertiesString()
|
|
fmt.Println(pr)
|
|
|
|
// Output:
|
|
// name = John
|
|
}
|
|
|
|
func ExampleJson_MustToProperties() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
pr := j.MustToProperties()
|
|
fmt.Println(string(pr))
|
|
|
|
// Output:
|
|
// name = John
|
|
}
|
|
|
|
func ExampleJson_MustToPropertiesString() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
pr := j.MustToPropertiesString()
|
|
fmt.Println(pr)
|
|
|
|
// Output:
|
|
// name = John
|
|
}
|
|
|
|
func ExampleJson_MarshalJSON() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
jsonBytes, _ := j.MarshalJSON()
|
|
fmt.Println(string(jsonBytes))
|
|
|
|
// Output:
|
|
// {"Age":18,"Name":"John"}
|
|
}
|
|
|
|
func ExampleJson_UnmarshalJSON() {
|
|
jsonStr := `{"Age":18,"Name":"John"}`
|
|
|
|
j := gjson.New("")
|
|
j.UnmarshalJSON([]byte(jsonStr))
|
|
fmt.Println(j.Map())
|
|
|
|
// Output:
|
|
// map[Age:18 Name:John]
|
|
}
|
|
|
|
func ExampleJson_UnmarshalValue_Yaml() {
|
|
yamlContent :=
|
|
`base:
|
|
name: john
|
|
score: 100`
|
|
|
|
j := gjson.New("")
|
|
j.UnmarshalValue([]byte(yamlContent))
|
|
fmt.Println(j.Var().String())
|
|
|
|
// Output:
|
|
// {"base":{"name":"john","score":100}}
|
|
}
|
|
|
|
func ExampleJson_UnmarshalValue_Xml() {
|
|
xmlStr := `<?xml version="1.0" encoding="UTF-8"?><doc><name>john</name><score>100</score></doc>`
|
|
|
|
j := gjson.New("")
|
|
j.UnmarshalValue([]byte(xmlStr))
|
|
fmt.Println(j.Var().String())
|
|
|
|
// Output:
|
|
// {"doc":{"name":"john","score":"100"}}
|
|
}
|
|
|
|
func ExampleJson_MapStrAny() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
fmt.Println(j.MapStrAny())
|
|
|
|
// Output:
|
|
// map[Age:18 Name:John]
|
|
}
|
|
|
|
func ExampleJson_Interfaces() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
infoList := []BaseInfo{
|
|
{
|
|
Name: "John",
|
|
Age: 18,
|
|
},
|
|
{
|
|
Name: "Tom",
|
|
Age: 20,
|
|
},
|
|
}
|
|
|
|
j := gjson.New(infoList)
|
|
fmt.Println(j.Interfaces())
|
|
|
|
// Output:
|
|
// [{John 18} {Tom 20}]
|
|
}
|
|
|
|
func ExampleJson_Interface() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
fmt.Println(j.Interface())
|
|
|
|
var nilJ *gjson.Json = nil
|
|
fmt.Println(nilJ.Interface())
|
|
|
|
// Output:
|
|
// map[Age:18 Name:John]
|
|
// <nil>
|
|
}
|
|
|
|
func ExampleJson_Var() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
fmt.Println(j.Var().String())
|
|
fmt.Println(j.Var().Map())
|
|
|
|
// Output:
|
|
// {"Age":18,"Name":"John"}
|
|
// map[Age:18 Name:John]
|
|
}
|
|
|
|
func ExampleJson_IsNil() {
|
|
data1 := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`)
|
|
data2 := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]`)
|
|
|
|
j1, _ := gjson.LoadContent(data1)
|
|
fmt.Println(j1.IsNil())
|
|
|
|
j2, _ := gjson.LoadContent(data2)
|
|
fmt.Println(j2.IsNil())
|
|
|
|
// Output:
|
|
// false
|
|
// true
|
|
}
|
|
|
|
func ExampleJson_Get() {
|
|
data :=
|
|
`{
|
|
"users" : {
|
|
"count" : 1,
|
|
"array" : ["John", "Ming"]
|
|
}
|
|
}`
|
|
|
|
j, _ := gjson.LoadContent(data)
|
|
fmt.Println(j.Get("."))
|
|
fmt.Println(j.Get("users"))
|
|
fmt.Println(j.Get("users.count"))
|
|
fmt.Println(j.Get("users.array"))
|
|
|
|
var nilJ *gjson.Json = nil
|
|
fmt.Println(nilJ.Get("."))
|
|
|
|
// Output:
|
|
// {"users":{"array":["John","Ming"],"count":1}}
|
|
// {"array":["John","Ming"],"count":1}
|
|
// 1
|
|
// ["John","Ming"]
|
|
}
|
|
|
|
func ExampleJson_GetJson() {
|
|
data :=
|
|
`{
|
|
"users" : {
|
|
"count" : 1,
|
|
"array" : ["John", "Ming"]
|
|
}
|
|
}`
|
|
|
|
j, _ := gjson.LoadContent(data)
|
|
|
|
fmt.Println(j.GetJson("users.array").Array())
|
|
|
|
// Output:
|
|
// [John Ming]
|
|
}
|
|
|
|
func ExampleJson_GetJsons() {
|
|
data :=
|
|
`{
|
|
"users" : {
|
|
"count" : 3,
|
|
"array" : [{"Age":18,"Name":"John"}, {"Age":20,"Name":"Tom"}]
|
|
}
|
|
}`
|
|
|
|
j, _ := gjson.LoadContent(data)
|
|
|
|
jsons := j.GetJsons("users.array")
|
|
for _, json := range jsons {
|
|
fmt.Println(json.Interface())
|
|
}
|
|
|
|
// Output:
|
|
// map[Age:18 Name:John]
|
|
// map[Age:20 Name:Tom]
|
|
}
|
|
|
|
func ExampleJson_GetJsonMap() {
|
|
data :=
|
|
`{
|
|
"users" : {
|
|
"count" : 1,
|
|
"array" : {
|
|
"info" : {"Age":18,"Name":"John"},
|
|
"addr" : {"City":"Chengdu","Company":"Tencent"}
|
|
}
|
|
}
|
|
}`
|
|
|
|
j, _ := gjson.LoadContent(data)
|
|
|
|
jsonMap := j.GetJsonMap("users.array")
|
|
|
|
for _, json := range jsonMap {
|
|
fmt.Println(json.Interface())
|
|
}
|
|
|
|
// May Output:
|
|
// map[City:Chengdu Company:Tencent]
|
|
// map[Age:18 Name:John]
|
|
}
|
|
|
|
func ExampleJson_Set() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
j.Set("Addr", "ChengDu")
|
|
j.Set("Friends.0", "Tom")
|
|
fmt.Println(j.Var().String())
|
|
|
|
// Output:
|
|
// {"Addr":"ChengDu","Age":18,"Friends":["Tom"],"Name":"John"}
|
|
}
|
|
|
|
func ExampleJson_MustSet() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
j.MustSet("Addr", "ChengDu")
|
|
fmt.Println(j.Var().String())
|
|
|
|
// Output:
|
|
// {"Addr":"ChengDu","Age":18,"Name":"John"}
|
|
}
|
|
|
|
func ExampleJson_Remove() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
j.Remove("Age")
|
|
fmt.Println(j.Var().String())
|
|
|
|
// Output:
|
|
// {"Name":"John"}
|
|
}
|
|
|
|
func ExampleJson_MustRemove() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
j.MustRemove("Age")
|
|
fmt.Println(j.Var().String())
|
|
|
|
// Output:
|
|
// {"Name":"John"}
|
|
}
|
|
|
|
func ExampleJson_Contains() {
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{
|
|
Name: "John",
|
|
Age: 18,
|
|
}
|
|
|
|
j := gjson.New(info)
|
|
fmt.Println(j.Contains("Age"))
|
|
fmt.Println(j.Contains("Addr"))
|
|
|
|
// Output:
|
|
// true
|
|
// false
|
|
}
|
|
|
|
func ExampleJson_Len() {
|
|
data :=
|
|
`{
|
|
"users" : {
|
|
"count" : 1,
|
|
"nameArray" : ["Join", "Tom"],
|
|
"infoMap" : {
|
|
"name" : "Join",
|
|
"age" : 18,
|
|
"addr" : "ChengDu"
|
|
}
|
|
}
|
|
}`
|
|
|
|
j, _ := gjson.LoadContent(data)
|
|
|
|
fmt.Println(j.Len("users.nameArray"))
|
|
fmt.Println(j.Len("users.infoMap"))
|
|
|
|
// Output:
|
|
// 2
|
|
// 3
|
|
}
|
|
|
|
func ExampleJson_Append() {
|
|
data :=
|
|
`{
|
|
"users" : {
|
|
"count" : 1,
|
|
"array" : ["John", "Ming"]
|
|
}
|
|
}`
|
|
|
|
j, _ := gjson.LoadContent(data)
|
|
|
|
j.Append("users.array", "Lily")
|
|
|
|
fmt.Println(j.Get("users.array").Array())
|
|
|
|
// Output:
|
|
// [John Ming Lily]
|
|
}
|
|
|
|
func ExampleJson_MustAppend() {
|
|
data :=
|
|
`{
|
|
"users" : {
|
|
"count" : 1,
|
|
"array" : ["John", "Ming"]
|
|
}
|
|
}`
|
|
|
|
j, _ := gjson.LoadContent(data)
|
|
|
|
j.MustAppend("users.array", "Lily")
|
|
|
|
fmt.Println(j.Get("users.array").Array())
|
|
|
|
// Output:
|
|
// [John Ming Lily]
|
|
}
|
|
|
|
func ExampleJson_Map() {
|
|
data :=
|
|
`{
|
|
"users" : {
|
|
"count" : 1,
|
|
"info" : {
|
|
"name" : "John",
|
|
"age" : 18,
|
|
"addr" : "ChengDu"
|
|
}
|
|
}
|
|
}`
|
|
|
|
j, _ := gjson.LoadContent(data)
|
|
|
|
fmt.Println(j.Get("users.info").Map())
|
|
|
|
// Output:
|
|
// map[addr:ChengDu age:18 name:John]
|
|
}
|
|
|
|
func ExampleJson_Array() {
|
|
data :=
|
|
`{
|
|
"users" : {
|
|
"count" : 1,
|
|
"array" : ["John", "Ming"]
|
|
}
|
|
}`
|
|
|
|
j, _ := gjson.LoadContent(data)
|
|
|
|
fmt.Println(j.Get("users.array"))
|
|
|
|
// Output:
|
|
// ["John","Ming"]
|
|
}
|
|
|
|
func ExampleJson_Scan() {
|
|
data := `{"name":"john","age":"18"}`
|
|
|
|
type BaseInfo struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
info := BaseInfo{}
|
|
|
|
j, _ := gjson.LoadContent(data)
|
|
j.Scan(&info)
|
|
|
|
fmt.Println(info)
|
|
|
|
// May Output:
|
|
// {john 18}
|
|
}
|
|
|
|
func ExampleJson_Dump() {
|
|
data := `{"name":"john","age":"18"}`
|
|
|
|
j, _ := gjson.LoadContent(data)
|
|
j.Dump()
|
|
|
|
// May Output:
|
|
// {
|
|
// "name": "john",
|
|
// "age": "18",
|
|
// }
|
|
}
|