为什么这个JSON解码不进入我的结构?

时间:2015-02-01 03:58:52

标签: json go

我在调用JSON.stringify之后发送这种数组

{
  "世": 1,
  "界": 1,
  "最": 1,
  "強": 1
}

但是在使用json.NewDecoder.Decode时遇到问题,我的struct是错误的吗?

type text struct {
    Text map[string]int
}

我也无法将数据发送回前端,如何将数据转换回[]字节,还是有另一种方法可以将json发送回前端?

func PostHandler(w http.ResponseWriter, r *http.Request){
    log.Println("post start")
    if r.Method != "POST" {
        log.Println("in post but early return")
        http.NotFound(w, r)
        return
    }

    decoder := json.NewDecoder(r.Body)
    var t text
    err := decoder.Decode(&t)
    if err != nil {
        log.Println("I tried")
        log.Println(r.Body)
    }
    log.Println(t.Text)
    //w.Write([]byte(t.Text))     //throws conversion error
}    

(我试图在前端和后端之间来回发送数据,以便在继续前进和扩展之前降低基础知识)

此外,从日志中打印的是

post start
map[]

1 个答案:

答案 0 :(得分:3)

将JSON值直接解码为map[string]int。地图对应于JSON值中的一个对象。

decoder := json.NewDecoder(r.Body)
var t map[string]int
err := decoder.Decode(&t)
if err != nil {
    log.Println("I tried")
    log.Println(r.Body)
}
log.Println(t)

similar playground example