json - 从发布请求中将 json 解码为数组

标签 json go

看下面我的

主.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"}]。

在控制台中我可以看到数据是这样发布的。

最佳答案

两件事:

  1. 您正在解码数据片段而不是“单元”片段。
  2. 公开“单位”字段,以便通过反射对解码器可见

参见: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/

相关文章:

javascript - 使用 jQuery 从 json 获取值,而不使用 foreach 循环

java - Jersey 将字符值序列化为 ASCII 等效数字字符串

Google Sheet API 问题 Golang

json - Golang解析JSON返回0

go - 我可以强制 filepath.Abs​​ 提供为另一个操作系统设计的路径吗?

javascript - C3 图表中的特定 JSON 值限制

asp.net - 如何获取JsonResult对象作为字符串,以便可以对其进行修改?

json - 合并结构 slice

go - Go 中的装饰器函数

go - 按具有相同值的字符串的顺序对结构进行排序