使用gjson包,铸造gjson。结果对象到字符串是简单的j.Get("str").String()
,但我不知道如何将对象强制转换为字符串切片。例如:
package main
import (
"fmt"
"github.com/tidwall/gjson"
)
func main() {
j := `{"array": ["a","b","c"]}`
gj := gjson.Parse(j).Get("array").Value()
for k, v := range gj {
fmt.Println(k, v)
}
}
此操作失败,因为Value()将数组强制转换为无法覆盖的接口。
从API文档中,Parse().Get()
的结果是Result()
类型。该包支持在该类型上工作的各种方便的函数。例如,您只需要Array()
方法
func main() {
j := `{"array": ["a","b","c"]}`
gj := gjson.Parse(j).Get("array").Array()
for k, v := range gj {
fmt.Println(k, v)
}
}
请注意,该包适用于特定于JSON的类型,而不是一般的Go
。
在JSON上下文中,返回的值是数组类型。因此,如果您需要[]string
类型,请使用Result.Str
属性创建自己的类型
func main() {
j := `{"array": ["a","b","c"]}`
var result []string
gj := gjson.Parse(j).Get("array").Array()
for _, v := range gj {
result = append(result, v.Str)
}
}