Go net/http获取body中json格式数据
Go net/http获取body中json格式数据
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
type AutotaskRequest struct {
RequestID string `json:"requestid"`
Clone CloneModel `json:"clone"`
Push PushModel `json:"push"`
}
type CloneModel struct {
//TODO
//"Method": string `json:"ceph"`
RequestID string `json:"requestid"`
CallbackURL string `json:"callbackurl"`
}
type PushModel struct {
RequestID string `json:"requestiD"`
CallbackURL string `json:"callbackuRL"`
IP string `json:"remoteip"`
Port int `json:"remoteport"`
User string `json:"user"`
}
func test(w http.ResponseWriter, r *http.Request) {
// r.ParseForm()
defer fmt.Fprintf(w, "ok\n")
fmt.Println("method:", r.Method)
body, err := ioutil.ReadAll(r.Body)
if err != nil {
fmt.Printf("read body err, %v\n", err)
return
}
println("json:", string(body))
var a AutotaskRequest
if err = json.Unmarshal(body, &a); err != nil {
fmt.Printf("Unmarshal err, %v\n", err)
return
}
fmt.Printf("%+v", a)
}
func main() {
http.HandleFunc("/test", test)
http.ListenAndServe(":8888", nil)
}
客户端所传递参数如下:
{ "requestid": "xxxxx", "clone": { "method": "ceph", "callbackurl": "xxx", "remoteip": "192.168.2.1", "remoteport": 8080, "user": "xxx", "pass": "xxx", "path": "xxx", "filename": "xxx" }, "optimize": { "callbackurl": "xxx", "filter": { "k1": true, "k2": false }, "trim": true, "progressive": true, "quality": 100, "colorNum": 256, "gifOptLevel": 2, "svgo": true, "guetzli": false, "css_rewrite": false, "js_rewrite": false }, "push": { "method": "ceph", "callbackurl": "xxx", "remoteip": "192.168.2.1", "remoteport": 8080, "user": "xxx", "pass": "xxx", "path": "xxx", "filename": "xxx" } }
json传递的参数中,服务端有的没有对应字段

浙公网安备 33010602011771号