从服务器发送JSON需要两次JSON.parse

时间:2014-07-08 20:20:06

标签: javascript json go

出于某种原因,我必须两次调用JSON.parse来在JavaScript中创建一个对象。我从Go(Golang)服务器生成JSON。

这是我正在使用的JavaScript代码。

ws.onmessage = function(e) {
    console.log(e.data);
    console.log(JSON.parse(e.data));
    console.log(JSON.parse(JSON.parse(e.data)));
};

这就是我在Chrome控制台中看到的内容。

"{\"hello\":\"world\"}"
{"hello":"world"}
Object {hello: "world"}

这就是我在服务器端生成JSON的方式。我怀疑我的服务器代码是错误的。

var jsonBuffer bytes.Buffer

jsonBuffer.WriteString("{")
for key, value := range mydict {
    jsonBuffer.WriteString(`"` + key `":"` + value + `"`)
}
jsonBuffer.WriteString("}")

return jsonBuffer.String()

这是我正在努力的简化。实际上,mydict定义为map[string]mystruct

mystruct是这样的:

type mystruct struct {
    Foo int
    Bar float64
}

1 个答案:

答案 0 :(得分:0)

为什么要手工构建json响应?我建议使用json包。您的代码看起来像这样

package main

import (
    "fmt"
    "encoding/json"
)

type Mystruct struct {
    Foo int
    Bar float64
}

func main() {
    m := Mystruct{1,100}
    j, _ := json.Marshal(m)
    fmt.Print(string(j))
}