3 回答
TA贡献2011条经验 获得超2个赞
您需要使用“encoding/json”包中的 Unmarshal 函数并使用虚拟结构来提取切片字段
// You can edit this code!
// Click here and start typing.
package main
import (
"encoding/json"
"fmt"
)
func main() {
str := `{"Responses":[{"type":"DROP_DOWN","value":"0"}]}`
type Responses struct {
Type string `json:"type"`
Value string `json:"value"`
}
// add dummy struct to hold responses
type Dummy struct {
Responses []Responses `json:"Responses"`
}
var res Dummy
err := json.Unmarshal([]byte(str), &res)
if err != nil {
panic(err)
}
fmt.Println("%v", len(res.Responses))
fmt.Println("%s", res.Responses[0].Type)
fmt.Println("%s", res.Responses[0].Value)
}
TA贡献1863条经验 获得超2个赞
JSON-to-go是一个很好的在线资源,可以为特定的 JSON 模式制作 Go 日期类型。
粘贴您的 JSON 正文并提取嵌套类型,您可以使用以下类型生成所需的 JSON 模式:
// types to produce JSON:
//
// {"Responses":[{"type":"DROP_DOWN","value":"0"}]}
type FruitBasket struct {
Response []Attr `json:"Responses"`
}
type Attr struct {
Type string `json:"type"`
Value string `json:"value"`
}
使用:
form := FruitBasket{
Response: []Attr{
{
Type: "DROP_DOWN",
Value: "0",
},
}
}
jsonData, err := json.Marshal(form)
工作示例:https ://go.dev/play/p/SSWqnyVtVhF
输出:
{"Responses":[{"type":"DROP_DOWN","value":"0"}]}
TA贡献1829条经验 获得超4个赞
您的结构不正确。你的标题想要字典,但你写了一个数组或字符串片段。
从此更改您的 FruitBasket 结构:
type FruitBasket struct {
Name5 []string `json:"Responses"`
}
对此
type FruitBasket struct {
Name5 []map[string]interface{} `json:"Responses"`
}
map[string]interface{}是字典吗
这是游乐场https://go.dev/play/p/xRSDGdZYfRN
- 3 回答
- 0 关注
- 169 浏览
添加回答
举报