2016-04-08 11 views
2

私はlightフレームワークのWebフレームワークecho(https://github.com/labstack/echo)を使用しており、非常に簡単なAPIを構築しようとしています。エコーフレームワークを使用したgolang API

これは私のルートの1つである

e.Get("/v1/:channel/:username", getData) 

これで、それはmysqlデータベース

func getData(c echo.Context) error { 
    quote := new(Quote) 
    for rows.Next() { 
     var username string 
     var message string 
     err = rows.Scan(&username, &message) 
     checkErr(err) 
     quote.username = username 
     quote.message = message 
    } 
    log.Println(quote) 

    defer rows.Close() 
    return c.JSON(http.StatusOK, quote) 
} 

からSELECT非常に単純な私はまた、戻り値

ため、この基本的な構造体を持っていないのgetData関数
type Quote struct { 
    username string 
    message string 
} 

悲しいことに、今やJSONを返す方法を見つけることができません。 このコードを試してみると、サーバーからの応答は常にちょうど{} 私は戻りますc.Stringをうまく動作し、応答を出力しますが、私はJSONを返したいと思います。

私はこの例に従いましたが、ここで実際に問題を見ることはできません。 https://github.com/labstack/echox/blob/master/recipe/crud/main.go

私は間違っていると思いますか?

答えて

8

構造体にはエクスポート可能な値がありません。名前は小文字であるためです。

type Quote struct { 
    Username string `json:"username"` 
    Password string `json:"password"` 
} 

私はコードスニペットに投稿したとして、あなたはあなたができる外部表現への内部から名前を変更したいので、もしあなたはまた、整列化キーの名前に注釈を付けることができます。

+0

これは意味があり、完璧に機能します!ありがとうございました! – gempir

+0

構造体を使わずに任意のjsonを生成する方法はありますか? – Homan

+1

'map [string] interface {}'を使ってJSONにマーシャリングすることができます。たとえば。 (str)) ' ' t:= map [string]インターフェイス{} {"フィールド1:"値1 "、} str、エラー:= json.Marshal(t)' 'fmt.Println(string(str))' @ホマン –

関連する問題