【问题标题】:How to Unmarshall a Json string in Go lang to obtain value of only one key如何在 Golang 中解组 Json 字符串以仅获取一个键的值
【发布时间】:2019-04-11 17:04:11
【问题描述】:

所以我需要解码一个 json 字符串以获得 key ID 的值,但我无法找到一种方法来仅提取一个键的值,所以我创建了整个 json 字符串的结构,以便我可以 unmarshal 它来提取信息,但我认为我的结构存在一些问题,因为我没有得到任何输出

package main

import (
    "fmt"
    "encoding/json"
)
type season struct{
    Data []seasoninfo `json:"seasoninfo"`
}
type seasoninfo struct{
    Aliases []string
    Banner string
    FirstAired string
    Id int
    Network string
    Overview string
    SeriesName string
    Slug string
    Status string
}
func main() {
    s := `{"data":[{"aliases":[],"banner":"graphical/81189-g21.jpg","firstAired":"2008-01-20","id":81189,"network":"AMC","overview":"Walter White, a struggling high school chemistry teacher, is diagnosed with advanced lung cancer. He turns to a life of crime, producing and selling methamphetamine accompanied by a former student, Jesse Pinkman, with the aim of securing his family's financial future before he dies.","seriesName":"Breaking Bad","slug":"breaking-bad","status":"Ended"},{"aliases":[],"banner":"","firstAired":"","id":356427,"network":"AMC","overview":null,"seriesName":"Breaking Bad: Original Minisodes","slug":"breaking-bad-original-minisodes","status":"Ended"},{"aliases":["Breaking Bad (ES)"],"banner":"graphical/273859-g.jpg","firstAired":"2014-06-08","id":273859,"network":"Univision","overview":"“Metastasis” is the story of a struggling high school chemistry teacher who is diagnosed with inoperable lung cancer. He turns to a life of crime, producing and selling meth with a former student in order to secure his family’s financial future before he passes away.","seriesName":"Metastasis","slug":"metastasis","status":"Ended"}]}`
    var series season
    err:=json.Unmarshal([]byte(s),&series)
    if err==nil{
        fmt.Println(series)
    } else{
        fmt.Println("wrong")
    }
}

输出是 {[]}

https://play.golang.org/p/5jYSp4cMCok

谢谢

【问题讨论】:

  • json:"seasoninfo" 错误。
  • 要么更改为 ``json:"data"`,要么将传入的 JSON 更改为 {"seasoninfo":[{"aliases":[],"banne,以便匹配您期望的密钥。 play.golang.org/p/mU5KlcBDsUkplay.golang.org/p/CeeEc48IyvZ 至少
  • 请您提及一个带有修改的 go playground 链接....我有点新手
  • 非常感谢.....它成功了
  • @PRAKHARKAUSHIK 我发布了一个答案。希望对您有所帮助!

标签: go


【解决方案1】:

问题是您当前正在尝试将结构字段 Data 与 JSON 属性键 seasoninfo 匹配。但是,您的示例 JSON 输入没有 seasoninfo 作为外部属性,而是将 data 作为外部属性。将json:"seasoninfo" 更改为json:"data"

type season struct{
  Data []seasoninfo `json:"data"`
}

这是一个example 的实际操作。

或者更简单,您可以考虑在结构字段的 JSON 匹配 Data 中将 json:"data" 部分删除为 data

这是example 的实际操作:

type season struct{
    Data []seasoninfo
}

希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多