已关闭此问题为not reproducible or was caused by typos。它目前不接受回答。
此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
14天前关闭
Improve this question
这是sample in the Playground。问题的关键是我无法解码/解组这个
Name := "TestName"
Desc := "Test Desc"
Body := []byte(`{"key": "value"}`)//simplest possible JSON but will have multiple levels
requestJson := fmt.Sprintf(`{"name": "%s","description": "%s","body": "%s"}`, Name, Desc, Body)
decoder := json.NewDecoder(strings.NewReader(requestJson))
err := decoder.Decode(&createRpt)
if err != nil {
fmt.Println("Report body is expected to be valid JSON", "error", err)
return
}
我也试过使用unmarshal
选项,可以在操场上看到。
2条答案
按热度按时间brccelvz1#
你应该不惜一切代价避免像这样格式化你自己的JSON。只需创建一个可以正确封送的结构:
Demo
这里的关键是
json.RawMessage
类型。这实际上告诉json.Marshal
不应该对该值进行解组,因此它将被原样复制(作为[]byte
)。如果您需要稍后在其他地方解组Body
的值,您可以简单地这样做:e0bqpujr2#
你的json中有一个错字,删除body值周围的
"
,它将被修复: