Goの勉強を初めて2週間程がたちWebアプリを作成していますが,下記のエラーを解決できないためどなたか教えていただきたいです.
実現したいことは,APIを叩いて取得したデータをSakesというstructにMarshalして,そのデータを返したいです.
現状の問題は,sakesのデータだけを取り出してSakesのstructにMarshalしたいのですが,json: cannot unmarshal object into Go value of type sakenote.Sakes
というエラーが返ってきます.
このエラーの原因は理解しているのですが,どのようにsakesのデータをSakesのstructに格納すれば良いのかがわからないので教えていただきたいです.
もし参考になるサイトがあればそちらのURLを共有していただけると助かります.
お手数おかけいたしますがよろしくお願いいたします.
https://www.sakenote.com/api/v1/sakes
を叩くと下記のようなJSONが返ってきます.
json
1{ 2 sakes: [ 3 { 4 sake_identify_code: "P002604", 5 sake_name: "〆", 6 sake_furigana: "けじめ", 7 sake_alphabet: "kejime", 8 maker_id: 5030, 9 maker_name: "伊東酒造", 10 maker_postcode: "392-0004", 11 maker_address: "長野県諏訪市諏訪2-3-6", 12 maker_url: "http://www.yokobue.co.jp/", 13 url: "https://www.sakenote.com/d/%E9%95%B7%E9%87%8E%E7%9C%8C/%E4%BC%8A%E6%9D%B1%E9%85%92%E9%80%A0/%E3%80%86", 14 discontinued: false 15 }, 16 { 17 ... 18 }, 19 ], 20 num_pages: 1
server
1const ( 2 ENDPOINT = "https://www.sakenote.com/api/v1/sakes" 3 APIKEY = "***" 4) 5 6type Sake struct { 7 SakeIdentifyCode string `json:"sake_identify_code"` 8 SakeName string `json:"sake_name"` 9 SakeFurigana string `json:"sake_furigana"` 10 SakeAlphabet string `json:"sake_alphabet"` 11 MakerID int `json:"maker_id"` 12 MakerName string `json:"maker_name"` 13 MakerPostcode string `json:"maker_postcode"` 14 MakerAddress string `json:"maker_address"` 15 MakerURL string `json:"maker_url"` 16 URL string `json:"url"` 17 Discontinued bool `json:"discontinued"` 18} 19 20type Sakes []Sake 21 22func GetSakes() ([]Sakes, error) { 23 baseURL := fmt.Sprintf("%s?token=%s", ENDPOINT, APIKEY) 24 req, err := http.NewRequest("GET", baseURL, nil) 25 if err != nil { 26 return nil, err 27 } 28 client := new(http.Client) 29 30 resp, err := client.Do(req) 31 if err != nil { 32 return nil, err 33 } 34 defer resp.Body.Close() 35 36 body, err := ioutil.ReadAll(resp.Body) 37 if err != nil { 38 return nil, err 39 } 40 41 var sakes Sakes 42 err = json.Unmarshal(body, &sakes) 43 44 return nil, nil 45}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/07 15:28