ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

go的json数据类型处理

2026/9/11 11:35:08 拓冰建站 浏览量
go的json数据类型处理

json对象转slice

package mainimport ("encoding/json""fmt""github.com/gogf/gf/container/garray"
)func main() {// JSON 字符串jsonStr := `["apple", "banana", "orange"]`//方法一:// 解析 JSON 字符串var data interface{}//json.Unmarshal 函数将 JSON 字符串解析为 Go 的内部数据结构(在这里是 []interface{})if err := json.Unmarshal([]byte(jsonStr), &data); err != nil {fmt.Println("解析 JSON 失败:", err)return}// 将数据转换为 g.Arrayarray, ok := data.([]interface{})if !ok {fmt.Println("无法转换为 g.Array")return}g.Dump(array)
//[
//  "apple",
//  "banana",
//  "orange", 
//]//方法二:
//利用goframe提供的gjsoncontent, _ := gjson.LoadContent(jsonStr)array := content.Array()g.Dump(array)}

slice转garray

slice := []string{"apple", "banana", "orange"}
//方法一: gArray := garray.New()for _, v := range slice {gArray.Append(v)}
//方法二:garray := garray.NewStrArrayFrom(slice)g.Dump(garray.Slice())// 输出结果fmt.Println(gArray.Slice())//利用goframe提供的garray判断是否存在指定的字符串contains := garray.Contains("apple")g.Dump(contains)	   	

json转map和gmap

package mainimport ("encoding/json""fmt"
)
//JSON 字符串转换为 map[string]interface{} 类型
func main() {// JSON 字符串jsonStr := `{"name": "John", "age": 30, "city": "New York"}`//方法一:// 解析 JSON 字符串var data map[string]interface{}if err := json.Unmarshal([]byte(jsonStr), &data); err != nil {fmt.Println("解析 JSON 失败:", err)return}//方法二:
//利用goframe提供的gjsoncontent, _ := gjson.LoadContent(jsonStr)data := content.Map()// 输出结果fmt.Println(data)// 将数据转换为 g.MapgMap := gmap.NewFrom(data)fmt.Println(gMap)
}

判断指定字符串是否在数组里面

   findStr := 3familyIds := "3,4"// 方式一:遍历// 字符串分割idsArr := gstr.Split(familyIds, ",")// 查找是否在数组里面for _, id := range idsArr {if id == gconv.String(findStr) {err = gerror.New("已加入")return}}//方式二:使用goframe 的 garray.StrArrayidsArr := gstr.Split(familyIds, ",")//或者改成一句:gArr := garray.NewStrArrayFrom(idsArr)var gArr garray.StrArraygArr.Append(idsArr...)fmt.Println(gArr.Contains(findStr))  //true

省市区json数据转换

    // 获取文件路径// filePath := gfile.Pwd() + "/public/data.json"// 读取文件内容// dataJson := gfile.GetContents(filePath)dataJson := `{"code": "110000","value": "北京市","children": [{"code": "110100","value": "北京市","children": [{"code": "110101","value": "东城区"},{"code": "110102","value": "西城区"}]}]}`type Area struct {Code     stringValue    stringChildren []Area}var area *Area//方式一:使用 jsonObj.String() 将 jsonObj 对象转换为原始的 JSON 字符串jsonObj := gjson.New(dataJson)jsonStr := jsonObj.String()err = json.Unmarshal([]byte(jsonStr), &area)if err != nil {fmt.Println("转换失败:", err)return}g.Dump("area", area)//方式二:使用goframe的 gjson.Scanj, _ := gjson.LoadContent(dataJson)j.Scan(&area)g.Dump("area", area)

在这里插入图片描述