Как разобрать строку Json в Go lang, чтобы получить значение только одного ключа - PullRequest
1 голос
/ 11 апреля 2019

Поэтому мне нужно декодировать строку 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

Спасибо

1 Ответ

1 голос
/ 11 апреля 2019

Проблема в том, что вы пытаетесь сопоставить структурное поле Data с ключом свойства JSON seasoninfo.Однако ваш пример ввода JSON не имеет seasoninfo в качестве внешнего свойства, он имеет data в качестве внешнего свойства.Либо измените json:"seasoninfo" на json:"data":

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

Вот пример в действии.

Или еще проще, вы можете просто удалить json:"data" часть как data в JSON соответствует Data поля структуры:

Вот пример в действии:

type season struct{
    Data []seasoninfo
}

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...