2021-01-17 21:46:25 +08:00
|
|
|
// Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
|
2020-03-21 21:32:02 +08:00
|
|
|
//
|
|
|
|
// This Source Code Form is subject to the terms of the MIT License.
|
|
|
|
// If a copy of the MIT was not distributed with this file,
|
|
|
|
// You can obtain one at https://github.com/gogf/gf.
|
|
|
|
|
|
|
|
package gjson_test
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
2022-11-01 20:12:21 +08:00
|
|
|
|
2021-10-11 21:41:56 +08:00
|
|
|
"github.com/gogf/gf/v2/encoding/gjson"
|
2020-03-21 21:32:02 +08:00
|
|
|
)
|
|
|
|
|
2020-03-22 12:49:46 +08:00
|
|
|
func Example_conversionNormalFormats() {
|
2020-03-21 21:32:02 +08:00
|
|
|
data :=
|
|
|
|
`{
|
|
|
|
"users" : {
|
|
|
|
"count" : 1,
|
|
|
|
"array" : ["John", "Ming"]
|
|
|
|
}
|
|
|
|
}`
|
2021-08-20 23:15:48 +08:00
|
|
|
|
2020-03-21 21:32:02 +08:00
|
|
|
if j, err := gjson.DecodeToJson(data); err != nil {
|
|
|
|
panic(err)
|
|
|
|
} else {
|
|
|
|
fmt.Println("JSON:")
|
|
|
|
fmt.Println(j.MustToJsonString())
|
|
|
|
fmt.Println("======================")
|
|
|
|
|
|
|
|
fmt.Println("XML:")
|
|
|
|
fmt.Println(j.MustToXmlString())
|
|
|
|
fmt.Println("======================")
|
|
|
|
|
|
|
|
fmt.Println("YAML:")
|
|
|
|
fmt.Println(j.MustToYamlString())
|
|
|
|
fmt.Println("======================")
|
|
|
|
|
|
|
|
fmt.Println("TOML:")
|
|
|
|
fmt.Println(j.MustToTomlString())
|
|
|
|
}
|
|
|
|
|
|
|
|
// Output:
|
|
|
|
// JSON:
|
|
|
|
// {"users":{"array":["John","Ming"],"count":1}}
|
|
|
|
// ======================
|
|
|
|
// XML:
|
|
|
|
// <users><array>John</array><array>Ming</array><count>1</count></users>
|
|
|
|
// ======================
|
|
|
|
// YAML:
|
|
|
|
// users:
|
2021-10-25 19:17:56 +08:00
|
|
|
// array:
|
|
|
|
// - John
|
|
|
|
// - Ming
|
|
|
|
// count: 1
|
2020-03-21 21:32:02 +08:00
|
|
|
//
|
|
|
|
// ======================
|
|
|
|
// TOML:
|
|
|
|
// [users]
|
|
|
|
// array = ["John", "Ming"]
|
|
|
|
// count = 1.0
|
|
|
|
}
|
|
|
|
|
2022-02-19 11:43:45 +08:00
|
|
|
func ExampleJson_ConversionGetStruct() {
|
2020-03-21 21:32:02 +08:00
|
|
|
data :=
|
|
|
|
`{
|
|
|
|
"users" : {
|
|
|
|
"count" : 1,
|
|
|
|
"array" : ["John", "Ming"]
|
|
|
|
}
|
|
|
|
}`
|
|
|
|
if j, err := gjson.DecodeToJson(data); err != nil {
|
|
|
|
panic(err)
|
|
|
|
} else {
|
|
|
|
type Users struct {
|
|
|
|
Count int
|
|
|
|
Array []string
|
|
|
|
}
|
|
|
|
users := new(Users)
|
2021-09-27 22:47:39 +08:00
|
|
|
if err := j.Get("users").Scan(users); err != nil {
|
2020-03-21 21:32:02 +08:00
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
fmt.Printf(`%+v`, users)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Output:
|
|
|
|
// &{Count:1 Array:[John Ming]}
|
|
|
|
}
|
|
|
|
|
2022-02-19 11:43:45 +08:00
|
|
|
func ExampleJson_ConversionToStruct() {
|
2020-03-21 21:32:02 +08:00
|
|
|
data :=
|
|
|
|
`
|
|
|
|
{
|
|
|
|
"count" : 1,
|
|
|
|
"array" : ["John", "Ming"]
|
|
|
|
}`
|
|
|
|
if j, err := gjson.DecodeToJson(data); err != nil {
|
|
|
|
panic(err)
|
|
|
|
} else {
|
|
|
|
type Users struct {
|
|
|
|
Count int
|
|
|
|
Array []string
|
|
|
|
}
|
|
|
|
users := new(Users)
|
2021-09-27 22:47:39 +08:00
|
|
|
if err := j.Var().Scan(users); err != nil {
|
2020-03-21 21:32:02 +08:00
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
fmt.Printf(`%+v`, users)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Output:
|
|
|
|
// &{Count:1 Array:[John Ming]}
|
|
|
|
}
|
2022-02-15 23:02:48 +08:00
|
|
|
|
|
|
|
func ExampleValid() {
|
|
|
|
data1 := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]}`)
|
|
|
|
data2 := []byte(`{"n":123456789, "m":{"k":"v"}, "a":[1,2,3]`)
|
|
|
|
fmt.Println(gjson.Valid(data1))
|
|
|
|
fmt.Println(gjson.Valid(data2))
|
|
|
|
|
|
|
|
// Output:
|
|
|
|
// true
|
|
|
|
// false
|
|
|
|
}
|
|
|
|
|
|
|
|
func ExampleMarshal() {
|
|
|
|
data := map[string]interface{}{
|
|
|
|
"name": "john",
|
|
|
|
"score": 100,
|
|
|
|
}
|
|
|
|
|
|
|
|
jsonData, _ := gjson.Marshal(data)
|
|
|
|
fmt.Println(string(jsonData))
|
|
|
|
|
|
|
|
type BaseInfo struct {
|
|
|
|
Name string
|
|
|
|
Age int
|
|
|
|
}
|
|
|
|
|
|
|
|
info := BaseInfo{
|
|
|
|
Name: "Guo Qiang",
|
|
|
|
Age: 18,
|
|
|
|
}
|
|
|
|
|
|
|
|
infoData, _ := gjson.Marshal(info)
|
|
|
|
fmt.Println(string(infoData))
|
|
|
|
|
|
|
|
// Output:
|
|
|
|
// {"name":"john","score":100}
|
|
|
|
// {"Name":"Guo Qiang","Age":18}
|
|
|
|
}
|
|
|
|
|
|
|
|
func ExampleMarshalIndent() {
|
|
|
|
type BaseInfo struct {
|
|
|
|
Name string
|
|
|
|
Age int
|
|
|
|
}
|
|
|
|
|
|
|
|
info := BaseInfo{
|
|
|
|
Name: "John",
|
|
|
|
Age: 18,
|
|
|
|
}
|
|
|
|
|
|
|
|
infoData, _ := gjson.MarshalIndent(info, "", "\t")
|
|
|
|
fmt.Println(string(infoData))
|
|
|
|
|
|
|
|
// Output:
|
|
|
|
// {
|
|
|
|
// "Name": "John",
|
|
|
|
// "Age": 18
|
|
|
|
// }
|
|
|
|
}
|
2022-02-16 22:38:25 +08:00
|
|
|
|
|
|
|
func ExampleUnmarshal() {
|
|
|
|
type BaseInfo struct {
|
|
|
|
Name string
|
|
|
|
Score int
|
|
|
|
}
|
|
|
|
|
|
|
|
var info BaseInfo
|
|
|
|
|
|
|
|
jsonContent := "{\"name\":\"john\",\"score\":100}"
|
|
|
|
gjson.Unmarshal([]byte(jsonContent), &info)
|
|
|
|
fmt.Printf("%+v", info)
|
|
|
|
|
|
|
|
// Output:
|
|
|
|
// {Name:john Score:100}
|
|
|
|
}
|
|
|
|
|
2022-05-02 17:29:19 +08:00
|
|
|
func ExampleEncode() {
|
|
|
|
type BaseInfo struct {
|
|
|
|
Name string
|
|
|
|
Age int
|
|
|
|
}
|
|
|
|
|
|
|
|
info := BaseInfo{
|
|
|
|
Name: "John",
|
|
|
|
Age: 18,
|
|
|
|
}
|
|
|
|
|
|
|
|
infoData, _ := gjson.Encode(info)
|
|
|
|
fmt.Println(string(infoData))
|
|
|
|
|
|
|
|
// Output:
|
|
|
|
// {"Name":"John","Age":18}
|
|
|
|
}
|
|
|
|
|
2022-02-16 22:38:25 +08:00
|
|
|
func ExampleMustEncode() {
|
|
|
|
type BaseInfo struct {
|
|
|
|
Name string
|
|
|
|
Age int
|
|
|
|
}
|
|
|
|
|
|
|
|
info := BaseInfo{
|
|
|
|
Name: "John",
|
|
|
|
Age: 18,
|
|
|
|
}
|
|
|
|
|
|
|
|
infoData := gjson.MustEncode(info)
|
|
|
|
fmt.Println(string(infoData))
|
|
|
|
|
|
|
|
// Output:
|
|
|
|
// {"Name":"John","Age":18}
|
|
|
|
}
|
|
|
|
|
|
|
|
func ExampleEncodeString() {
|
|
|
|
type BaseInfo struct {
|
|
|
|
Name string
|
|
|
|
Age int
|
|
|
|
}
|
|
|
|
|
|
|
|
info := BaseInfo{
|
|
|
|
Name: "John",
|
|
|
|
Age: 18,
|
|
|
|
}
|
|
|
|
|
|
|
|
infoData, _ := gjson.EncodeString(info)
|
|
|
|
fmt.Println(infoData)
|
|
|
|
|
|
|
|
// Output:
|
|
|
|
// {"Name":"John","Age":18}
|
|
|
|
}
|
|
|
|
|
|
|
|
func ExampleMustEncodeString() {
|
|
|
|
type BaseInfo struct {
|
|
|
|
Name string
|
|
|
|
Age int
|
|
|
|
}
|
|
|
|
|
|
|
|
info := BaseInfo{
|
|
|
|
Name: "John",
|
|
|
|
Age: 18,
|
|
|
|
}
|
|
|
|
|
|
|
|
infoData := gjson.MustEncodeString(info)
|
|
|
|
fmt.Println(infoData)
|
|
|
|
|
|
|
|
// Output:
|
|
|
|
// {"Name":"John","Age":18}
|
|
|
|
}
|
|
|
|
|
|
|
|
func ExampleDecode() {
|
|
|
|
jsonContent := `{"name":"john","score":100}`
|
|
|
|
info, _ := gjson.Decode([]byte(jsonContent))
|
|
|
|
fmt.Println(info)
|
|
|
|
|
|
|
|
// Output:
|
|
|
|
// map[name:john score:100]
|
|
|
|
}
|
|
|
|
|
|
|
|
func ExampleDecodeTo() {
|
|
|
|
type BaseInfo struct {
|
|
|
|
Name string
|
|
|
|
Score int
|
|
|
|
}
|
|
|
|
|
|
|
|
var info BaseInfo
|
|
|
|
|
|
|
|
jsonContent := "{\"name\":\"john\",\"score\":100}"
|
|
|
|
gjson.DecodeTo([]byte(jsonContent), &info)
|
|
|
|
fmt.Printf("%+v", info)
|
|
|
|
|
|
|
|
// Output:
|
|
|
|
// {Name:john Score:100}
|
|
|
|
}
|
|
|
|
|
|
|
|
func ExampleDecodeToJson() {
|
|
|
|
jsonContent := `{"name":"john","score":100}"`
|
|
|
|
j, _ := gjson.DecodeToJson([]byte(jsonContent))
|
|
|
|
fmt.Println(j.Map())
|
|
|
|
|
2022-02-23 00:46:13 +08:00
|
|
|
// May Output:
|
2022-02-16 22:38:25 +08:00
|
|
|
// map[name:john score:100]
|
|
|
|
}
|