如何在 Golang 中将 JSON 解码为对象?


假设我们有一个如下所示的 JSON。

{
   "name":"Mukul Latiyan",
   "age":10,
   "sports":[
      "football",
      "tennis",
      "cricket"
   ]
}

现在,我们想将此 JSON 转换为我们稍后可以访问乃至遍历的**结构**字段。

为此,我们首先需要创建**结构**,该**结构**将满足上述 JSON 的字段。

下面显示的**结构**适用于上述 JSON。

type Person struct {
   Name string `json:"name"`
   Age int `json:"age"`
   Sports []string `json:"sports"`
}

现在,下一步是用类型转换的帮助将上述 JSON 对象转换为字节切片,然后,我们将该字节切片连同**Person**对象作为第二个参数传递给**Unmarshal()**函数。

示例

考虑以下所示代码。

package main

import (
   "encoding/json"
   "fmt"
)

type Person struct {
   Name string `json:"name"`
   Age int `json:"age"`
   Sports []string `json:"sports"`
}

func main() {
   text := []byte(
      `{
         "name":"Mukul Latiyan",
         "age":10,
         "sports":["football","tennis","cricket"]

      }`)
   var p Person
   err := json.Unmarshal(text, &p)
   if err != nil {
      panic(err)
   }
   fmt.Println(p.Name)
   fmt.Println(p.Age)
   for _, value := range p.Sports {
      fmt.Println(value)
   }
}

在上述代码中,在调用**Unmarshal**函数后,我们仅打印**结构**中不同字段的值。

如果我们在上述代码上运行命令 **go run main.go**,那么我们将在终端中获得以下输出。

输出

Mukul Latiyan
10
football
tennis
cricket

更新于: 2021-11-01

1K+ 查看

开启你的 职业生涯

完成课程以取得认证

开始
广告