为了账号安全,请及时绑定邮箱和手机立即绑定

如何将字符串转换为 JSON 并将数据保存在数组中?

如何将字符串转换为 JSON 并将数据保存在数组中?

Go
饮歌长啸 2022-04-20 17:42:54
我正在使用这个JSON 解析器从我从 API 获得的 JSON 响应中提取数据。它返回一个包含数据的字节数组,当将字节数组转换为字符串并打印它时,我得到以下输出:   [{"Name": "Vikings", "Type": "show"},    {"Name": "Spartacus: Gods Of The Arena", "Type": "show"},    {"Name": "True Detective", "Type": "show"},    {"Name": "The Borgias", "Type": "show"},    {"Name": "Se7en", "Type": "movie"}]由于这是一个常规字符串,我无法操纵数据来提取我需要的任何内容。理想情况下,我想要这样的数组:   shows := ["Vikings", "Spartacus: Gods Of The Arena"...]   movies := ["Se7en", "other data", ...]我想对这些数组做的是根据他/她要求的类型(即:节目、电影等)给用户标题。所以基本上我正在寻找的是一种将字符串转换为我可以轻松操作(并且可能过滤)的东西的方法。如果这似乎是一种奇怪的方式,我表示歉意,但我想不出任何其他方式。我觉得 Go 的语法和做事方式与另一种语言(如 Javascript)相比,我可以很容易地在一两行内完成这项工作。
查看完整描述

1 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

使用标准encoding/json包将数据解组为与数据形状匹配的值:


var items []struct {  // Use slice for JSON array, struct for JSON object

    Name string       

    Type string        

}

if err := json.Unmarshal(d, &items); err != nil {

    log.Fatal(err)

}

循环遍历未编组的项目以查找节目和电影:


var shows, movies []string

for _, item := range items {

    switch item.Type {

    case "movie":

        movies = append(movies, item.Name)

    case "show":

        shows = append(shows, item.Name)

    }

}


查看完整回答
反对 回复 2022-04-20
  • 1 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信