Javascript json:无法将字符串解组为main.test_struct类型的Go值
我从一个api收到一个json,我试图将其解组,但我不理解我得到的错误: json:无法将字符串解组为main.test_struct类型的Go值 下面是我得到的json: 这是我的密码:Javascript json:无法将字符串解组为main.test_struct类型的Go值,javascript,json,go,Javascript,Json,Go,我从一个api收到一个json,我试图将其解组,但我不理解我得到的错误: json:无法将字符串解组为main.test_struct类型的Go值 下面是我得到的json: 这是我的密码: type test_struct struct { Lat float32 `json:"lat"` Lng float32 `json:"lng"` Acc int `json:"acc"` } func postGeo(w http.ResponseWriter,
type test_struct struct {
Lat float32 `json:"lat"`
Lng float32 `json:"lng"`
Acc int `json:"acc"`
}
func postGeo(w http.ResponseWriter, r *http.Request) {
var t test_struct;
err := json.NewDecoder(r.Body).Decode(&t)
if err != nil {
panic(err)
}
/* hah, err := ioutil.ReadAll(r.Body);
if err != nil {
panic(err)
}
Info.Println(hah)
s := string(hah)
Info.Println(s)
Info.Println(t.Lat)*/
defer r.Body.Close()
Info.Println("POST FP")
w.Header().Set("Access-Control-Allow-Origin", "*")
fmt.Fprintf(w, "200")
}
如果有人有任何线索。。。
谢谢和问候
编辑:第二个版本仍然相同错误:
type test_struct struct {
Lat float32 `json:"lat"`
Lng float32 `json:"lng"`
Acc int `json:"acc"`
}
func postGeo(w http.ResponseWriter, r *http.Request) {
var t test_struct;
err := json.NewDecoder(r.Body).Decode(&t)
if err != nil {
panic(err)
}
/* hah, err := ioutil.ReadAll(r.Body);
if err != nil {
panic(err)
}
Info.Println(hah)
s := string(hah)
Info.Println(s)
Info.Println(t.Lat)*/
//defer r.Body.Close()
fmt.Println("POST FP")
w.Header().Set("Access-Control-Allow-Origin", "*")
fmt.Fprintf(w, "200")
}
编辑三:
这里是发送数据的代码(javascript)
棘手的部分是如何通过
jQuery.ajax()
发送数据。在一个例子中,您可能会发现:
默认情况下,作为对象传递到数据选项的数据(从技术上讲,是字符串以外的任何内容)将被处理并转换为查询字符串,符合默认内容类型“application/x-www-form-urlencoded”
这意味着脚本发送的数据看起来更像:
lat=48.892423&lng=2.215331&acc=1962
棘手的部分是如何通过
jQuery.ajax()
发送数据。在一个例子中,您可能会发现:
默认情况下,作为对象传递到数据选项的数据(从技术上讲,是字符串以外的任何内容)将被处理并转换为查询字符串,符合默认内容类型“application/x-www-form-urlencoded”
这意味着脚本发送的数据看起来更像:
lat=48.892423&lng=2.215331&acc=1962
这是正文、引号和all中的文本值,还是包含在更大的json正文中的值?如果是这样的话,它是一个包含json的字符串,您需要取消对它的引用。@JimB这是json,我得到的json中通常没有引用。当我取消注释代码以打印正文时,得到的是打印。错误是特定的,您给它一个字符串,如果正常情况下没有引号,那么它将工作。我不知道
Info.Println
在格式化参数方面做了什么,可能会通过一个普通的fmt.Println
显示输出,因此我们可以更好地猜测您正在使用什么。(顺便说一句,您不需要调用r.Body.Close)这里有一个简化版本:不幸的是,它工作得很好。可能是一个字符串在正文中转义了两次吗?这是正文、引号和all中的文本值,还是包含在更大的json正文中的值?如果是这样的话,它是一个包含json的字符串,您需要取消对它的引用。@JimB这是json,我得到的json中通常没有引用。当我取消注释代码以打印正文时,得到的是打印。错误是特定的,您给它一个字符串,如果正常情况下没有引号,那么它将工作。我不知道Info.Println
在格式化参数方面做了什么,可能会通过一个普通的fmt.Println
显示输出,因此我们可以更好地猜测您正在使用什么。(顺便说一句,您不需要调用r.Body.Close)这里有一个简化版本:不幸的是,它工作得很好。可能是你在一具尸体里发现了一根逃逸了两次的绳子?
lat=48.892423&lng=2.215331&acc=1962