当前位置: 首页 > 知识库问答 >
问题:

GoLang/Javascript:在JSON POST上空postForm和解码(正文)

袁运良
2023-03-14

我试图张贴JSON数据从一个javascript页面,到Go语言服务器,但我无法找到任何使用SO接受的答案两端JSON数据的痕迹。

这篇文章展示了我在Javascript中发布JSON的方式,这篇文章展示了我在Go中处理JSON的方式。

//js json post send
var request = new XMLHttpRequest();
request.open('POST', 'http://localhost:8080/aardvark/posts', true);
request.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');

var data = {hat: "fez"};
request.send(JSON.stringify(data));

下面的标题是根据这个答案设置的

//Go json post response
func reply(w http.ResponseWriter, r *http.Request) {

    w.Header().Set("Access-Control-Allow-Origin", "*")
    w.Header().Set("Access-Control-Allow-Credentials", "true")
    w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, accept, origin, Cache-Control, X-Requested-With")
    w.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT")


    if err := r.ParseForm(); err != nil {
        fmt.Println(err);
    }

    //this is my first impulse.  It makes the most sense to me.
    fmt.Println(r.PostForm);          //out -> `map[]`  would be `map[string]string` I think
    fmt.Println(r.PostForm["hat"]);   //out -> `[]`  would be `fez` or `["fez"]`
    fmt.Println(r.Body);              //out -> `&{0xc82000e780 <nil> <nil> false true {0 0} false false false}`


    type Hat struct {
        hat string
    }

    //this is the way the linked SO post above said should work.  I don't see how the r.Body could be decoded.
    decoder := json.NewDecoder(r.Body)
    var t Hat   
    err := decoder.Decode(&t)
    if err != nil {
        fmt.Println(err);
    }
    fmt.Println(t);                  //out -> `{ }`
}

我真的不知道从这里还能尝试什么。我应该做什么改变才能让这一切顺利进行?

共有1个答案

王飞虎
2023-03-14

导出结构Hat的字段hat和json解码将起作用。

type Hat struct {
    Hat string // Exported field names begins with capital letters
}
 类似资料:
  • 问题内容: 我目前正在使用Golang应用程序。我从客户端收到JWT令牌,在Go中,我需要对该令牌进行解码并获取以下信息:用户,名称等。我正在检查可用于处理JWT的库令牌,我来到https://github.com/dgrijalva/jwt- go ,但我看不到如何简单地制作所需的东西。 我有令牌,我需要将信息解码为地图或至少为json。在哪里可以找到如何做的指南?谢谢! 问题答案: 函数接受第

  • 问题内容: 我正在尝试将JSON参数发送到我的服务器,并使用json.Decoder解析它们。我读到您应该能够从request.Body属性获取查询参数。以下是我的服务器代码: 每次,我都会看到(当然是不同的时间戳记)。我的客户端AJAX调用如下: 发送内容的示例URL: 更好看一下参数: 我已经尝试了GET和POST请求。 为什么我的req.Body从不解码?如果我尝试单独打印req.Body,

  • 我实现了一个自定义ErrorDecoder: 我想用这个ist实现的目的是转发错误响应。我的问题是,如果响应状态为404,则ErrorResource为null。 例如,如果我将返回的响应状态更改为400,则错误资源包含响应。 提前感谢!

  • 问题内容: JavaScript中是否可以使用base64编码对字符串进行编码和解码的任何方法? 问题答案: 某些浏览器(例如Firefox,Chrome,Safari,Opera和IE10+)可以原生处理Base64。看一下这个Stackoverflow问题。它正在使用和函数。 对于服务器端JavaScript(节点),可以使用进行解码。 如果您要使用跨浏览器解决方案,则可以使用现有的库,例如C

  • 我收到一个作为当前href的一部分。它是用base64编码的。我尝试使用对其进行解码,但得到以下错误: 在“window”上执行“atob”失败:要解码的字符串编码不正确 当我在代码中复制并粘贴提取的并转到一个在线解码站点时,它会正确解码。你有什么建议吗?

  • 当我向azure功能发送请求时,我收到以下异常: 内部异常系统。系统上已处理NullReferenceException。运行时。例外服务。例外DispatchInfo。投掷:在AlidaDutilities。OnUnzipHttpTriggered d__0。MoveNext(AlidaDutilities,版本=1.0.0.0,区域性=neutral,PublicKeyToken=NullAl