使用JSON的Golang响应

时间:2017-10-08 04:49:03

标签: json go

我是Golang的新手,我正在尝试构建一个简单的tcp服务器。但是我遇到了一些使用JSON响应的问题。我写了下面的代码,然后尝试postman发送一些json数据。但是,我的邮递员总是得到空的回复而content-typetext/plain; charset=utf-8。然后我在http://www.alexedwards.net/blog/golang-response-snippets#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)
}

2 个答案:

答案 0 :(得分:6)

主要区别在于struct中的变量是public(export)

type Profile struct {
  Name    string
  Hobbies []string
}

在您的情况下,它们不是(小写)。

type ResponseCommands struct {
    key   string
    value bool
}

请参阅" Lowercase JSON key names with JSON Marshal in Go"。

答案 1 :(得分:0)

VonC 已经回答正确。只是想补充一点,IDEA可以帮助这样的小'问题。 我使用的是Gogland,它让我知道json标记无法应用于小写字段。