zoukankan      html  css  js  c++  java
  • 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
    ")
    
    	fmt.Println("method:", r.Method)
    	body, err := ioutil.ReadAll(r.Body)
    	if err != nil {
    		fmt.Printf("read body err, %v
    ", err)
    		return
    	}
    	println("json:", string(body))
    
    	var a AutotaskRequest
    	if err = json.Unmarshal(body, &a); err != nil {
    		fmt.Printf("Unmarshal err, %v
    ", 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传递的参数中,服务端有的没有对应字段

  • 相关阅读:
    电子论文写作不发愁
    美化 Blog
    The problem with install redhat linux
    Unknown hard error.stop:c000021a.
    .NET集合类:定义,用途及使用条件
    linux ftp 命令详解
    [转]MVC和MVP的区别
    一次谷歌面试趣事(转)
    全文索引原理及其示例(sqlserver)【转】
    “什么是团队精神”——《海贼王》里的一段台词
  • 原文地址:https://www.cnblogs.com/pluse/p/7927768.html
Copyright © 2011-2022 走看看