1
我正在構建一個http api,並且每個處理程序都會返回JSON數據,所以我構建了一個處理JSON編組和http響應的包裝函數(我包含了來自包裝器以及下面的一個示例處理程序)。go中的任意JSON數據結構
什麼是通過任意嵌套結構的最好方法(結構還包含任意類型/數量的字段)。現在我已經在帶有字符串鍵和接口{}的值的地圖上定位了。這是有效的,但是這是否是最慣用的方式呢?
result := make(map[string]interface{})
customerList(httpRequest, &result)
j, err := json.Marshal(result)
if err != nil {
log.Println(err)
errs := `{"error": "json.Marshal failed"}`
w.Write([]byte(errs))
return
}
w.Write(j)
func customerList(req *http.Request, result *map[string]interface{}) {
data, err := database.RecentFiftyCustomers()
if err != nil {
(*result)["error"] = stringifyErr(err, "customerList()")
return
}
(*result)["customers"] = data//data is a slice of arbitrarily nested structs
}
我認爲地圖[字符串]接口{}是一個好主意。但是,地圖已經是引用了,你不需要使用指針。 – creack
太棒了,認爲是小費。 –
看看Andrew Gerrand的博客文章「JSON and Go」(http://blog.golang.org/json-and-go)。特別是「解碼任意數據」部分。 – Intermernet