gjson是一款Go语言的JSON解析库。

gjson解析JSON确实非常方便,当parse一个JSON对象后返回的是一个Result对象,基于这个Result对象还可以继续解析, 直到调用String()Value()方法时才真正把JSON解析出来,这种设计理念和Java中的Stream很类似。

gjson除了能够解析整个JSON对象外,在解析时还可以使用.语法解析出内嵌的对象,这就超级方便了。

但是gjson没有API能直解解析JSON数组字符串,为解决这个问题需要在数组外面再包裹一层对象,例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
  package main
  
  import (
    "github.com/tidwall/gjson"
    "github.com/gin-gonic/gin/json"
  )
  
  func main() {
    jsonStr := `[{"name": "阿花", "age": 23}, {"name": "队长", "age": 22}]`
    jsonStr = `{"res": ` + jsonStr + "}"
    arr := gjson.Parse(jsonStr).Value().(map[string]interface{})["res"]
    bytes, _ := json.Marshal(arr)
    println(string(bytes))
  }

输出:

1
[{"age":23,"name":"阿花"},{"age":22,"name":"队长"}]