猿问

用于解组 JSON 数组的 Go 结构

所以我有一些 JSON(由 PetFinder API 提供),它有一个 JSON 数组“pet”。我想从它解组,使用“编码/json”包,一个宠物结构的切片。 这种结构会是什么样子?我找不到 unmarshall 函数如何处理 JSON 数组的任何示例。


这是我计划在拥有合适的结构后执行的操作:


pfetch := new(PetsFetcher) // where PetsFetcher is the struct im asking for

err := json.Unmarshal(body, &pfetch)

这是主体中的 json(以 ascii 字节切片的形式):


{

  "petfinder": {

    "lastOffset": {

      "$t": 5

    },

    "pets": {

      "pet": [

        {

          "options": {

            "option": [

              {

                "$t": "altered"

              },

              {

                "$t": "hasShots"

              },

              {

                "$t": "housebroken"

              }

            ]

          },

          "breeds": {

            "breed": {

              "$t": "Dachshund"

            }

          }

    },

        {

          "options": {

            "option": {

              "$t": "hasShots"

            }

          },

          "breeds": {

            "breed": {

              "$t": "American Staffordshire Terrier"

            }

          },

          "shelterPetId": {

            "$t": "13-0164"

          },

          "status": {

            "$t": "A"

          },

          "name": {

            "$t": "HAUS"

          }

        }

      ]

    }

  }

}

提前致谢。


呼如林
浏览 207回答 2
2回答

慕仙森

您可以将 javascript 数组解组为切片。marhsal/unmarshalling 规则Marshal在json 包中描述。要解组看起来像“$t”的键,您必须注释它将解压缩到的结构。例如:type Option struct {    Property string `json:"$t,omitempty"`}可能出现的 $t 是错误的,应该是字典中的键。
随时随地看视频慕课网APP

相关分类

Go
我要回答