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传递的参数中,服务端有的没有对应字段

  • 相关阅读:
    HTML5-拖拽
    POJ1182食物链(并查集)
    欧拉函数之HDU1286找新朋友
    Another kind of Fibonacce(矩阵快速幂,HDU3306)
    我的第一道java_A+B
    bestcoder#33 1002 快速幂取余+模拟乘,组合数学
    快速幂模版
    bestcoder#33 1001 高精度模拟
    poj2446_二分图
    poj3984_bfs+回溯路径
  • 原文地址:https://www.cnblogs.com/pluse/p/7927768.html
Copyright © 2011-2022 走看看