17
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Go言語で簡単にHTTPリクエストを送ってJSONをパースするサンプル

Last updated at Posted at 2015-10-31

ヒカリエで行われたGo初心者向けハンズオン(http://gocon.connpass.com/event/21550/)
に参加してきて、とても簡単にAPIからJSON受け取って表示するだけのコマンドラインツールを作ってみたので乗っけてみます。

easyjsonというライブラリと、teratail APIを使いました。

Goハンズオンのチュートリアル用のリポジトリがとても完成度が高くて感動したので、みなさんもやってみるといいと思います。画像をいろいろ変換すコマンドラインアプリケーションを、引数の取り方やエラー処理などをきちんと行いながら作っていくもの。

他の言語でしばらくやっていて、Go言語の基本文法はざっとさらったうえで、これをやるのはとても良いと思います。

コード

package main

import (
    "os"
    "fmt"
    "net/http"
    "github.com/m0a/easyjson"
)

var api = "https://teratail.com/api/v1"

func run() error {
    resp, err := http.Get(api+"/questions")
    if err != nil {
        return fmt.Errorf("Failed to connect teratail.com")
    }
    defer resp.Body.Close()

    jsonData, err := easyjson.NewEasyJson(resp.Body)
    if err != nil {
        return fmt.Errorf("Invalid responses")
    }

    for _, v:=range jsonData.K("questions").RangeObjects() {
        fmt.Printf("%s\n", v.K("title"))
    }

    return nil
}

func main() {
    if err := run(); err != nil {
        fmt.Fprintf(os.Stderr, "%s\n", err)
        os.Exit(1)
    }
}
17
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?