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

Sending JSON from server requires JSON.parse twice

本文关键字:JSON 两次 服务器 需要      更新时间:2023-09-26

出于某种原因,我不得不调用JSON。解析两次以在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
}

为什么要手工构建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))
}