gf/encoding/gjson/gjson_z_example_conversion_test.go

172 lines
3.1 KiB
Go
Raw Normal View History

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"
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:
// array:
// - John
// - Ming
// count: 1
2020-03-21 21:32:02 +08:00
//
// ======================
// TOML:
// [users]
// array = ["John", "Ming"]
// count = 1.0
}
2020-03-22 12:49:46 +08:00
func Example_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)
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]}
}
2020-03-22 12:49:46 +08:00
func Example_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)
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]}
}
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
// }
}