将具有JSON数组的JSON对象解组到结构中

S. *_*cko -2 json go

我想将json对象数组解组到结构中。每个json对象都有一个用于其中一个属性的json数组。如果将该属性定义为字符串,则可以使用。如果将其定义为字节或字符串数​​组,则会收到错误消息。

我尝试了多种方法,但始终遇到错误。

panic: ERROR: json: cannot unmarshal string into Go struct field 
.productlist of type []string
Run Code Online (Sandbox Code Playgroud)

源文件:

{
  "orgs": [
    {
      "orgname": "Test Organization 26",
      "orgs_id": 26,
      "contactdate": "2019-12-12",
      "sincedate": "2019-12-12",
      "estusers": null,
      "estvehicles": null,
      "paidusers": null,
      "paythreshold": null,
      "productlist": "[\"SDCC\",\"JOB_CARDS\",\"ALLOCATIONS\"]",
      "roles": "[\"DISPATCH\",\"DRIVERS\",\"MECHANICS\"]"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

去结构:

type OrgsJSONData struct {
    Orgs []struct {
        Orgname      string      `json:"orgname"`
        OrgsID       int         `json:"orgs_id"`
        Contactdate  string      `json:"contactdate"`
        Sincedate    string      `json:"sincedate"`
        Estusers     interface{} `json:"estusers"`
        Estvehicles  interface{} `json:"estvehicles"`
        Paidusers    interface{} `json:"paidusers"`
        Paythreshold interface{} `json:"paythreshold"`
        Productlist  []string    `json:"productlist"`
        Roles        string      `json:"roles"`
    } `json:"orgs"`
}

Run Code Online (Sandbox Code Playgroud)

码:

    var orgsJSONData OrgsJSONData
    tmp := []byte(strings.Join(JsonData, ""))
    err := json.Unmarshal(tmp, &orgsJSONData)
    if err != nil {
        panic("ERROR: " + err.Error())
    }
Run Code Online (Sandbox Code Playgroud)

如果productlist属性是字符串,则解组起作用。如果它是其他任何切片或数组,则会收到错误消息:“ panic:ERROR:json:无法将字符串解组到[] string类型的Go struct字段.productlist中”我在做什么错。PS刚接触Golang(第2周和学习)

Bur*_*dar 5

JSON输入中的productlist字段是字符串,而不是数组:

"productlist": "[\"SDCC\",\"JOB_CARDS\",\"ALLOCATIONS\"]"
Run Code Online (Sandbox Code Playgroud)

请注意,它的内容用引号引起来,并且用引号引起来。这是一个字符串,而不是数组。

如果它是一个数组,它将是:

"productlist": ["SDCC","JOB_CARDS","ALLOCATIONS"]
Run Code Online (Sandbox Code Playgroud)