对于以下 JSON 响应{"table_contents":[{"id":100,"description":"text100"},{"id":101,"description":"text101"},{"id":1,"description":"text1"}]}
您所要做的就是生成以下代码以正确执行它并能够从结构中读取字段,例如:
package main
import (
"fmt"
"encoding/json"
)
type MyStruct1 struct {
TableContents []struct {
ID int
Description string
} `json:"table_contents"`
}
func main() {
result:= []byte(`{"table_contents":[{"id":100,"description":"text100"},{"id":101,"description":"text101"},{"id":1,"description":"text1"}]}`)
var container MyStruct1
err := json.Unmarshal(result, &container)
if err != nil {
fmt.Println(" [0] Error message: " + err.Error())
return
}
for i := range container.TableContents {
fmt.Println(container.TableContents[i].Description)
}
}
但是你如何处理下面的 JSON 响应呢?{"table_contents":[[{"id":100,"description":"text100"},{"id":101,"description":"text101"}],{"id":1,"description":"text1"}]}您可以获得此响应或上述响应,重要的是修改结构以接受两者。
在互联网的帮助下,我做了这样的事情:
package main
import (
"fmt"
"encoding/json"
)
type MyStruct1 struct {
TableContents []TableContentUnion `json:"table_contents"`
}
type TableContentClass struct {
ID int
Description string
}
type TableContentUnion struct {
TableContentClass *TableContentClass
TableContentClassArray []TableContentClass
}
func main() {
result:= []byte(`{"table_contents":[[{"id":100,"description":"text100"},{"id":101,"description":"text101"}],{"id":1,"description":"text1"}]}`)
var container MyStruct1
err := json.Unmarshal(result, &container)
if err != nil {
fmt.Println(" [0] Error message: " + err.Error())
return
}
for i := range container.TableContents {
fmt.Println(container.TableContents[i])
}
}
但它不会超过错误消息:(
[0] 错误消息:json: cannot unmarshal array into Go struct field MyStruct1.table_contents of type main.TableContentUnion*
几个小时以来一直在努力想出一个解决方案。如果有人可以帮助我会很高兴。感谢您的阅读。如果您有任何问题,请告诉我
叮当猫咪
一只萌萌小番薯
当年话下
翻翻过去那场雪
随时随地看视频慕课网APP
相关分类