我试图在Go中返回一个简单的json。这是一个网络应用,这是处理程序的一部分:
ConcurrentHashMap
通过curl进行请求时,会收到类似以下内容的
:func JsonTest1(w http.ResponseWriter, r *http.Request) {
test1 := "something1"
test2 := 456
j1 := []byte(fmt.Sprintf(`
{
data: {
"test1": %s,
"test2": %d
}
}
`, test1, test2))
j2, _ := json.Marshal(&j1)
w.Header().Set("Content-Type", "application/json")
w.Write(j2)
}
为什么?该如何解决?
答案 0 :(得分:2)
当您对[]byte
进行JSON编码时,它将呈现为base64编码的字符串,这是表示JSON中任意字节切片/数组的最有效方法(唯一的替代方法是{{1} } 等等)。但是,在您的代码中,您正在做一些不寻常的事情,这些事情可能不是您想要的:
"field": [7, 129, 13, 48, ...]
手动创建JSON形式的字符串,然后尝试对JSON进行JSON编码。 Sprintf
用于获取任意的Go值并将其呈现为JSON。您想要的可能是以下选项之一:
json.Marshal