看下面我的
主.go
type Data struct {
unit []string `json:"unit"`
}
func receive(w http.ResponseWriter, r *http.Request) {
dec := json.NewDecoder(r.Body)
for {
var d Data
if err := dec.Decode(&d); err == io.EOF {
break
} else if err != nil {
log.Println(err)
}
log.Printf("%s\n", d.unit)
}
}
抛出的错误:“json:无法将数组解码为 main.Data 类型的 GO 值”
moj.js
$(function(){
$('#start').on('click', function(){
var i;
var j = 0;
for (i = 0; i < result.length; i++){
if(result[i] == null){
}else if(result[i]==""){
}else{
lookup[j] = result[i];
j++
}
}
$.ajax({
type: 'POST',
url: '/start',
data: '[{"unit":"'+lookup+'"}]',
dataType: "json",
contentType: "application/json",
success: function () {
alert("Data posted.")
},
error: function(){
alert('Error posting data.')
}
});
});
});
我发送的“json”看起来像:[{"unit":"something"}]。
在控制台中我可以看到数据是这样发布的。
最佳答案
两件事:
- 您正在解码数据片段而不是“单元”片段。
- 公开“单位”字段,以便通过反射对解码器可见
参见:https://play.golang.org/p/4kfIQTXqYi
type Data struct {
Unit string `json:"unit"`
}
func receive(w http.ResponseWriter, r *http.Request) {
dec := json.NewDecoder(r.Body)
for {
var d []Data
if err := dec.Decode(&d); err == io.EOF {
break
} else if err != nil {
log.Println(err)
}
log.Printf("%s\n", d.Unit)
}
}
关于json - 从发布请求中将 json 解码为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34022839/