GoアプリケーションからRESTエンドポイントで提供したいAPIからデータを取得しています。RESTエンドポイントで有効なJSONとして構造体を返すにはどうすればよいですか?
構造体のようなある:
type Stock struct {
Stock string `json:"message_id,omitempty"`
StockData map[string]interface{} `json:"status,omitempty"`
}
//
var StockDataMap Stock
、コンソールに印刷された場合、それがになっていて、それが見えます。
私のコントローラのようなある:ハッシュテーブル、私が欲しいものです:キーでStockDataMap
結果を印刷
package lib
import (
"net/http"
"log"
"encoding/json"
)
func returnStocksFromMemory(w http.ResponseWriter, r *http.Request) {
json.Marshal(StockDataMap)
}
// Expose controller at http://localhost:8081/
func StockMarketDataController() {
http.HandleFunc("/stocks", returnStocksFromMemory)
log.Fatal(http.ListenAndServe(":8081", nil))
}
。ただし、http://localhost:8081/stocks
にアクセスすると何も返されません。
returnStocksFromMemoryは確かに問題です。しかし、そこで有効なJSONに構造体を戻すにはどうしたらいいですか?今のところ、それは空であると言われています。
'json.Marshal'は、符号化されたJSONでエラーバイトスライスを返します。両方を破棄し、レスポンスライターには書き込みを行わないので、ブラウザに何も出力されません。 ['json'パッケージはよく文書化されています](https://golang.org/pkg/encoding/json/)。 – Adrian
クライアントに何らかの応答データを返すためには、*ハンドラ*はまずそのデータをレスポンスに書き込む必要があります。これは 'http.ResponseWriter'インタフェースが来る場所です。クライアントが受け取る任意のバイトを書くことができます。レスポンスボディ。したがって、ハンドラはクライアントにデータを返すために 'w'を使用しなければなりません。クライアントは空のボディを取得しません。 – mkopriva