使用go get -u github.com/thedevsaddam/gojsonq
安装
package main
import (
"fmt"
"github.com/thedevsaddam/gojsonq/v2"
func main() {
user1 := `{
"name": "tian",
"married": false,
"address": {
"city": "beijing",
"country": "China"
user1json := gojsonq.New().FromString(user1)
name1 := user1json.Find("name").(string)
user1json.Reset()
city1 := user1json.Find("address.city")
fmt.Printf("The name is %s and the city is %v", name1, city1)
- 在第一次查询name之后,手动调用了一次
Reset()
方法。因为JSONQ对象在调用Find
方法时,内部会记录当前的节点,下一个查询会从上次查找的节点开始
程序运行后的结果如下:
PS E:\goland-workspace\GolangLearning\Common\json数据处理\gojsonq> go run .\main.go
The name is tian and the city is beijing
Go 语言自带的 encode/json 包提供了对 JSON 数据格式的编码和解码能力。
解析 JSON 的关键,其实在于如何声明存放解析后数据的变量的类型。
此外使用 json 编码还会有几个需要注意的地方,谨防踩坑。
解析简单JSON
先观察下这段 JSON 数据的组成,name,created 是字符串。id 是整型,fruit 是一个字符串数组
"name": "St...
JSON: JavaScript Object Notation(JavaScript 对象表示法)
JSON 是存储和交换文本信息的语法,类似 XML。
JSON 比 XML 更小、更快,更易解析。
JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
简单来说,这种结构储存数据有许多优点,我们喜欢使
在 Golang 中,可以使用反射来解析 JSON 数据。下面是一个简单的示例:
首先,你需要定义一个结构体,该结构体的字段与 JSON 数据的字段对应。例如,假设我们有以下的 JSON 数据:
```json
"name": "John",
"age": 30,
"email": "[email protected]"
那么,你可以定义一个名为 `Person` 的结构体:
```go
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Email string `json:"email"`
接下来,你可以使用 `encoding/json` 包来解析 JSON 数据。示例代码如下:
```go
import (
"encoding/json"
"fmt"
func main() {
jsonData := []byte(`{
"name": "John",
"age": 30,
"email": "[email protected]"
var person Person
err := json.Unmarshal(jsonData, &person)
if err != nil {
fmt.Println("解析 JSON 失败:", err)
return
fmt.Println("Name:", person.Name)
fmt.Println("Age:", person.Age)
fmt.Println("Email:", person.Email)
在上述代码中,我们使用 `json.Unmarshal` 函数将 JSON 数据解析为 `Person` 结构体对象。然后,我们可以通过访问结构体的字段来获取解析后的数据。
请注意,结构体字段的标签 `json:"fieldName"` 是用于指定 JSON 数据中对应的字段名。这样,在解析 JSON 数据时,Golang 就会自动将 JSON 数据中的字段值赋给结构体的相应字段。
希望这个示例能够帮助你理解如何使用反射解析 JSON 数据。如果你有任何进一步的问题,请随时提问。