phoenix-powergolangを触ってみました。

golang

gojson

https://github.com/ChimeraCoder/gojson

1
$ sudo go get github.com/ChimeraCoder/gojson

ここで、なぜかエラーが出ます。よくわからないのですが、ビルドが実行されてない感じなので、手動ビルドすることにしました。

1
2
3
4
5
$ cd $GOPATH/src/!$

$ sudo go build json-to-struct.go

$ curl -s https://api.github.com/repos/chimeracoder/gojson | ./json-to-struct -name=Repository

web server

通常は、こんな感じで、ディレクトリ管理するのですが、今回はやりません。

1
2
3
4
5
$ mkdir -p $GOPATH/src/github.com/user/webserver

$ cd !$

$ sudo go install

Web Serverを立ち上げてみます。そこに、JSONデータを置くことにしましょう。

main.goLINK
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package main

import (
  "encoding/json"
  "net/http"
)

type Profile struct {
  Name    string
  Hobbies []string
}

func main() {
  http.HandleFunc("/", foo)
  http.ListenAndServe(":3000", nil)
}

func foo(w http.ResponseWriter, r *http.Request) {
  profile := Profile{"syui", []string{"snowboarding", "programming"}}

  js, err := json.Marshal(profile)
  if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
  }

  w.Header().Set("Content-Type", "application/json")
  w.Write(js)
}

サーバーを立ち上げると、以下のリクエストを返します。

1
2
3
4
5
6
7
$ sudo go run main.go

$ curl -i localhost:3000
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 56
{"Name":"syui",Hobbies":["snowboarding","programming"]}

gojsonを使ってみると、こんな感じです。./json-to-struct

1
2
3
4
5
6
7
8
$ curl -s localhost:3000 | gojson

package main

type Foo struct {
  Hobbies []string `json:"Hobbies"`
  Name    string   `json:"Name"`
}

http log

ログとかも表示したりできますので、応用可能性が広がります。

http://qiita.com/futoase/items/ea86b750bbb36d7d859a