golang http输出json

文章目录

    • golang http输出json数据
    • 使用postman调用后输出的结果

golang http输出json数据

通常,golang有两种方式输出http数据,一种使用io.Copy的方式,一种是调用responseWriter的write方法,看似是没有直接输出http的方式,但是在研究了Beego的输出之后,发现其实,只要对responseWriter设置header的,设置content-type为application-json,然后在输出数据,这时候客户端收到的就是json格式的数据了
话不多说,上代码

package main

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

type UserMessage struct {
	Name   string `json:"name"`
	Class  int    `json:"class"`
	Mobile string `json:"mobile"`
}

var u = UserMessage{
	Name:   "学生9527",
	Class:  7,
	Mobile: "1752w4532423",
}

var ret, err = json.Marshal(&u)
//设置header并且输出为json
func OutPutJson(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("Content-Type", "application-json")
	io.Copy(w, strings.NewReader(string(ret)))
}
//设置header并且输出为json
func OutPutJson2(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("Content-Type", "application-json")
	w.Write(ret)
}
//正常输出
func Out(w http.ResponseWriter,r *http.Request){
	w.Write(ret)
}
func main() {
	http.HandleFunc("/outputJson", OutPutJson)  //输出为json
	http.HandleFunc("/json2",OutPutJson2)//输出为json
	http.HandleFunc("/normal",Out)//输出为[]byte

	err := http.ListenAndServe(":808", nil)
	if err != nil {
		panic("initial failed")
	}
}

使用postman调用后输出的结果

1.http://:808/outputJsfon
输出:

{
    "name": "学生9527",
    "class": 7,
    "mobile": "!752w4532423"
}

2.http://:808/json2

{
    "name": "学生9527",
    "class": 7,
    "mobile": "!752w4532423"
}

3.http://:808/normal

{"name":"学生9527","class":7,"mobile":"!752w4532423"}

你可能感兴趣的:(golang脱坑笔记)