以下常用方法列表,文档更新可能滞后于代码新特性,更多的方法及示例请参考代码文档: https://pkg.go.dev/github.com/gogf/gf/v2/encoding/gjson
New
-
说明:
New
可以用任意类型的值data
创建一个Json
对象,但是由于数据访问的关系,data
应该是一个map
或者slice
,否则是无意义的。 -
注意:
safe
参数决定了Json
对象是否是并发安全的,默认为false
-
格式:
func New(data interface{}, safe ...bool) *Json
- 示例:
func ExampleNew() {
jsonContent := `{"name":"john", "score":"100"}`
j := gjson.New(jsonContent)
fmt.Println(j.Get("name"))
fmt.Println(j.Get("score"))
// Output:
// john
// 100
}
NewWithTag
-
说明:
NewWithTag
可以用任意类型的值data
创建一个Json
对象,但是由于数据访问的关系,data
应该是一个map
或者slice
,否则是无意义的。 -
注意:
tgts
参数指定了结构体转换到map的标签名的优先级,多个标签用','
分割。 -
safe
参数决定了Json
对象是否是并发安全的,默认为false
-
格式:
func NewWithTag(data interface{}, tags string, safe ...bool) *Json
- 示例:
func ExampleNewWithTag() {
type Me struct {
Name string `tag:"name"`
Score int `tag:"score"`
Title string
}
me := Me{
Name: "john",
Score: 100,
Title: "engineer",
}
j := gjson.NewWithTag(me, "tag", true)
fmt.Println(j.Get("name"))
fmt.Println(j.Get("score"))
fmt.Println(j.Get("Title"))
// Output:
// john
// 100
// engineer
}
NewWithOptions
-
说明:
NewWithOptions
可以用任意类型的值data
创建一个Json
对象,但是由于数据访问的关系,data
应该是一个map
或者slice
,否则是无意义的。 -
格式:
func NewWithOptions(data interface{}, options Options) *Json
- 示例:
func ExampleNewWithOptions() {
type Me struct {
Name string `tag:"name"`
Score int `tag:"score"`
Title string
}
me := Me{
Name: "john",
Score: 100,
Title: "engineer",
}
j := gjson.NewWithOptions(me, gjson.Options{
Tags: "tag",
})
fmt.Println(j.Get("name"))
fmt.Println(j.Get("score"))
fmt.Println(j.Get("Title"))
// Output:
// john
// 100
// engineer
}
func ExampleNewWithOptions_UTF8BOM() {
jsonContent := `{"name":"john", "score":"100"}`
content := make([]byte, 3, len(jsonContent)+3)
content[0] = 0xEF
content[1] = 0xBB
content[2] = 0xBF
content = append(content, jsonContent...)
j := gjson.NewWithOptions(content, gjson.Options{
Tags: "tag",
})
fmt.Println(j.Get("name"))
fmt.Println(j.Get("score"))
// Output:
// john
// 100
}
Load
-
说明:
Load
从指定的文件path
中加载内容,并将其内容创建一个Json
对象。 -
格式:
func Load(path string, safe ...bool) (*Json, error)
- 示例:
func ExampleLoad() {
jsonFilePath := gtest.DataPath("json", "data1.json")
j, _ := gjson.Load(jsonFilePath)
fmt.Println(j.Get("name"))
fmt.Println(j.Get("score"))
notExistFilePath := gtest.DataPath("json", "data2.json")
j2, _ := gjson.Load(notExistFilePath)
fmt.Println(j2.Get("name"))
// Output:
// john
// 100
}
func ExampleLoad_Xml() {
jsonFilePath := gtest.DataPath("xml", "data1.xml")
j, _ := gjson.Load(jsonFilePath)
fmt.Println(j.Get("doc.name"))
fmt.Println(j.Get("doc.score"))
}
LoadJson
-
说明:
LoadJson
用给定的JSON
格式的内容创建一个Json
对象。 -
格式:
func LoadJson(data interface{}, safe ...bool) (*Json, error)
- 示例:
func ExampleLoadJson() {
jsonContent := `{"name":"john", "score":"100"}`
j, _ := gjson.LoadJson(jsonContent)
fmt.Println(j.Get("name"))
fmt.Println(j.Get("score"))
// Output:
// john
// 100
}
LoadXml
-
说明:
LoadXml
用给定的XML
格式的内容创建一个Json
对象。 -
格式:
func LoadXml(data interface{}, safe ...bool) (*Json, error)
- 示例:
func ExampleLoadXml() {
xmlContent := `<?xml version="1.0" encoding="UTF-8"?>
<base>
<name>john</name>
<score>100</score>
</base>`
j, _ := gjson.LoadXml(xmlContent)
fmt.Println(j.Get("base.name"))
fmt.Println(j.Get("base.score"))
// Output:
// john
// 100
}