gjson:将json数组强制转换为切片



使用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)
}

}

最新更新