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

时间: 2024-10-08 04:56:28

Go net/http获取body中json格式数据的相关文章

nodejs 获取url中json格式的参数

在使用nodejs时经常使用req.query.参数名 来获取参数的值 例如 url : http://localhost:7778/project?id=1 <span style="font-size:18px;">var id = req.query.id console.log(id);//打印出url的id参数值1 </span> 但是在url中的参数是JSON格式时就出现了问题 url:http://localhost:7778/project?ma

小程序获取data中json格式的某个属性值

signlist: [{ id: 0, title: '星期一', active: "" }, { id: 1, title: '星期二', active: "" }, { id: 2, title: '星期三', active: "" }, { id: 3, title: '星期四', active: "" }, { id: 4, title: '星期五', active: "" }, { id: 5,

dataTables获取当前行json格式数据

装载表格数据 1 $(document).ready( function () { 2 //页面加载后装载表格数据 3 var table = $('#mytable').DataTable( { 4 "sProcessing": "处理中...", 5 "ajax": { 6 "url": "/contact/getTableDatas", 7 }, 8 "columns": [ 9

24.使用getJSON()方法异步加载JSON格式数据

使用getJSON()方法可以通过Ajax异步请求的方式,获取服务器中的数组,并对获取的数据进行解析,显示在页面中,它的调用格式为: jQuery.getJSON(url,[data],[callback])或$.getJSON(url,[data],[callback]) 其中,url参数为请求加载json格式文件的服务器地址,可选项data参数为请求时发送的数据,callback参数为数据请求成功后,执行的回调函数. 例如,点击页面中的“加载”按钮,调用getJSON()方法获取服务器中JS

iOS开发之JSON格式数据的生成与解析

本文将从四个方面对IOS开发中JSON格式数据的生成与解析进行讲解: 一.JSON是什么? 二.我们为什么要用JSON格式的数据? 三.如何生成JSON格式的数据? 四.如何解析JSON格式的数据?  JSON格式取代了xml给网络传输带来了很大的便利,但是却没有了xml的一目了然,尤其是json数据很长的时候,我们会陷入繁琐复杂的数据节点查找中.这时我们就需要一款在线校验工具 BeJson. 一.JSON是什么? JSON(JavaScript Object Notation) 是一种轻量级的

jQuery获取JSON格式数据方法

getJSON方法: jQuery.getJSON(url,data,success(data,status,xhr)) $("button").click(function(){ $.getJSON("demo_ajax_json.js",function(result_data){ $.each(result_data, function(index, name_value){ $("div").append(name_value + &qu

Delphi中Json格式读写

Json是一种轻量级数据传输格式,广泛应用互联网和各应用中,json主要采用键值对来表示数据项,多个数据项之间用逗号分隔,也可以用于数组.下面注重介绍一下在delphi中使用json,在delphi中使用json常用superobject单元文件,该文件可以在网上下载,最初接触json是在2011年,好久没用这不刚好有项目要用到又折腾了好久,下面做了一个简单的Demo,方便以后忘了能随时查看,具体的json使用可以参看万一老师的博客,记录的很详细,下面的demo主要是将数据库记录转换为json格

json格式数据2中方式解析实例

json格式数据2中方式解析实例 json是移动平台上非常常用的数据传输格式,本示例提供了两种Json格式文件生成与解析的方式.第一种通过JsonReader和JsonWriter两个对象进行json文件的读写操作,需要sdk在11以上.第二种通过JSONArray.JSONObject.JSONTokener等对象进行json读写操作,需要sdk在9以上.这种方式也可通过引入jar包的方式在其他版本的sdk中实现.启动客户端后,先点击写入json按钮(第1或3个按钮)生成Json文件(位置为s

在JSP页面中输出JSON格式数据

JSON-taglib是一套使在JSP页面中输出JSON格式数据的标签库. JSON-taglib主页: http://json-taglib.sourceforge.net/index.htmlJAR包下载地址: http://sourceforge.net/projects/json-taglib/files/latest/download 使用方法:1.下载json-taglib.jar,将其放到WEB-INF/lib目录2.在jsp页面中做如下声明:<%@ taglib prefix=&qu