我想将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周和学习)
JSON输入中的productlist字段是字符串,而不是数组:
"productlist": "[\"SDCC\",\"JOB_CARDS\",\"ALLOCATIONS\"]"
Run Code Online (Sandbox Code Playgroud)
请注意,它的内容用引号引起来,并且用引号引起来。这是一个字符串,而不是数组。
如果它是一个数组,它将是:
"productlist": ["SDCC","JOB_CARDS","ALLOCATIONS"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |