2017-10-08 44 views
3

我是golang的新手,我正在嘗試構建一個簡單的tcp服務器。不過,我遇到了一些JSON響應問題。我寫了下面的代碼,然後嘗試郵遞員發送一些json數據。但是,我的郵遞員總是得到空的答覆,並且content-typetext/plain; charset=utf-8。然後我在http://www.alexedwards.net/blog/golang-response-snippets#json檢查了一個樣本。我複製&粘貼樣本,它運作良好。但我看不出我和樣本有什麼區別。有人可以提供一些幫助嗎?Golang回覆JSON

package main 

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

type ResponseCommands struct { 
    key string 
    value bool 
} 

func main() { 
    http.HandleFunc("/", handler) 
    http.ListenAndServe(":5432", nil) 
} 

func handler(rw http.ResponseWriter, req *http.Request) { 
    responseBody := ResponseCommands{"BackOff", false} 

    data, err := json.Marshal(responseBody) 
    if err != nil { 
     http.Error(rw, err.Error(), http.StatusInternalServerError) 
     return 
    } 
    rw.WriteHeader(200) 
    rw.Header().Set("Content-Type", "application/json") 
    rw.Write(data) 
} 

回答

3

的主要區別在於,在結構變量是公共的(出口)

type Profile struct { 
    Name string 
    Hobbies []string 
} 

在你的情況,他們不是(小寫)。

type ResponseCommands struct { 
    key string 
    value bool 
} 

請參閱「Lowercase JSON key names with JSON Marshal in Go」。

+0

Thx尋求幫助。這工作! – Lehtia

0

As VonC已經回答正確。只是想補充說IDEA可以解決這些「小問題」。 我正在使用Gogland,它讓我知道json標記不能應用於小寫字段。