李育真 likes this
gjson
模块除了最基础支持的JSON
数据格式创建Json
对象,还支持常用的数据格式内容创建Json
对象。支持的数据格式为:JSON
, XML
, INI
, YAML
, TOML
,PROPERTIES
。此外,也支持直接通过struct
对象创建Json
对象。
对象创建常用New
和Load*
方法,更多的方法请查看接口文档:https://pkg.go.dev/github.com/gogf/gf/v2/encoding/gjson
New
方法创建JSON
数据创建jsonContent := `{"name":"john", "score":"100"}` j := gjson.New(jsonContent) fmt.Println(j.Get("name")) fmt.Println(j.Get("score")) // Output: // john // 100
XML
数据创建jsonContent := `<?xml version="1.0" encoding="UTF-8"?><doc><name>john</name><score>100</score></doc>` j := gjson.New(jsonContent) // Note that there's root node in the XML content. fmt.Println(j.Get("doc.name")) fmt.Println(j.Get("doc.score")) // Output: // john // 100
Strcut
对象创建type Me struct { Name string `json:"name"` Score int `json:"score"` } me := Me{ Name: "john", Score: 100, } j := gjson.New(me) fmt.Println(j.Get("name")) fmt.Println(j.Get("score")) // Output: // john // 100
Struct
转换标签type Me struct { Name string `tag:"name"` Score int `tag:"score"` Title string } me := Me{ Name: "john", Score: 100, Title: "engineer", } // The parameter <tags> specifies custom priority tags for struct conversion to map, // multiple tags joined with char ','. j := gjson.NewWithTag(me, "tag") fmt.Println(j.Get("name")) fmt.Println(j.Get("score")) fmt.Println(j.Get("Title")) // Output: // john // 100 // engineer
Load*
方法创建最常用的是Load
和LoadContent
方法,前者通过文件路径读取,后者通过给定内容创建Json
对象。方法内部会自动识别数据格式,并自动解析转换为Json
对象。
Load
方法创建JSON
文件
jsonFilePath := gtest.DataPath("json", "data1.json") j, _ := gjson.Load(jsonFilePath) fmt.Println(j.Get("name")) fmt.Println(j.Get("score"))
XML
文件
jsonFilePath := gtest.DataPath("xml", "data1.xml") j, _ := gjson.Load(jsonFilePath) fmt.Println(j.Get("doc.name")) fmt.Println(j.Get("doc.score"))
LoadContent
创建jsonContent := `{"name":"john", "score":"100"}` j, _ := gjson.LoadContent(jsonContent) fmt.Println(j.Get("name")) fmt.Println(j.Get("score")) // Output: // john // 100
Powered by a free Atlassian Confluence Open Source Project License granted to GoFrame. Evaluate Confluence today.
3 Comments
hanqian
郭强
这里
Set
方法的内部细节没处理好,我处理下。jiftle
gjson 支持能够添加输出排序json字符串的方法