golangで構造体をjsonとして出力

2014-07-15
このエントリーをはてなブックマークに追加

PythonのDictionaryみたいなのがあるのを期待してたんだけどそういう便利なものはなくて構造体を使うっぽい。

package main

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

type SomeStruct struct {
	ID   int
	Name string
}

func StructHandler(w http.ResponseWriter, r *http.Request) {

	_struct := SomeStruct{1, "some string"}
	_json, err := json.Marshal(_struct)

	if err != nil {
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}
	w.Header().Set("Content-Type", "application/json")
	w.Write(_json)
}

func main() {
	http.HandleFunc("/struct.json", StructHandler)
	http.ListenAndServe(":15100", nil)
}

Tags: ,

golangでjsonを返却するapi

2014-07-12
このエントリーをはてなブックマークに追加

引き続きgolang。

package main

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

func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "Hello World.")
}

func JsonHandler(w http.ResponseWriter, r *http.Request) {

	var body = map[string]int{
		"a": 0,
		"b": 1,
		"c": 2,
		"d": 3,
	}

	_json, err := json.Marshal(body)

	if err != nil {
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}
	w.Header().Set("Content-Type", "application/json")
	w.Write(_json)

}

func main() {
	http.HandleFunc("/", handler)
	http.HandleFunc("/hello.json", JsonHandler)
	http.ListenAndServe(":15100", nil)
}

/hello.jsonへのリクエストで呼ばれるJsonHandlerが追加された部分。mapの使い方はこれでいいんだろうか。Pythonの辞書みたいにキーによってデータの型が違うっていうのは書けないのかなぁ。

Tags: ,