json:无法将数组解组为main类型的Go值。

时间:2018-05-16 07:11:21

标签: json go

Json是 -

    {
"apiAddr":"abc",
"data":
    [
        {
        "key":"uid1",
        "name":"test",
        "commandList":["dummy cmd"],
        "frequency":"1",
        "deviceList":["dev1"],
        "lastUpdatedBy": "user",
        "status":"Do something"
        }
]

}

解组的代码是 -

   type Data struct {
    APIAddr string             `json:"apiAddr"`
    Data    []Template         `json:"data"`
   }

    type Template struct {
   Key           string   `json:"key"`
   Name          string   `json:"name"`
   CommandList   []string `json:"commandList"`
   Frequency     string   `json:"frequency"`
   DeviceList    []string `json:"deviceList"`
   LastUpdatedBy string   `json:"lastUpdatedBy"`
   Status        string   `json:"status"`
}
   raw, err := ioutil.ReadFile(*testFile)
      if err != nil {
        return
    }
    var testTemplates Data
    err = json.Unmarshal(raw, &testTemplates)
    if err != nil {
        return
    }

其中testFile是json文件。 我收到此错误

  

json:无法将数组解组为main.Data类型的Go值。

查看stackoverflow中的现有问题,看起来我做得很好。没人?

1 个答案:

答案 0 :(得分:0)

做了一些修改,Unmarshaling工作得很好。

package main

import (
    "encoding/json"
    "fmt"
)

var raw = `   {
"apiAddr":"abc",
"data":
    [
        {
        "key":"uid1",
        "name":"test",
        "commandList":["dummy cmd"],
        "frequency":"1",
        "deviceList":["dev1"],
        "lastUpdatedBy": "user",
        "status":"Do something"
        }
]
}`

func main() {
    var testTemplates Data
    err := json.Unmarshal([]byte(raw), &testTemplates)
    if err != nil {
        return
    }
    fmt.Println("Hello, playground", testTemplates)
}

type Data struct {
    APIAddr string     `json:"apiAddr"`
    Data    []Template `json:"data"`
}

type Template struct {
    Key           string   `json:"key"`
    Name          string   `json:"name"`
    CommandList   []string `json:"commandList"`
    Frequency     string   `json:"frequency"`
    DeviceList    []string `json:"deviceList"`
    LastUpdatedBy string   `json:"lastUpdatedBy"`
    Status        string   `json:"status"`
}

您也可以在Playground中运行它:https://play.golang.org/p/TSmUnFYO97-