How to return Json data without escape string in RESTful api on Golang
我已经用Golang编写了一个API。此API确实从其他服务接收数据,然后以JSON字符串类型响应用户。这是我遇到的问题。
1 2 3 4 5 6 7 8 9 | type message struct { Data string `json:"data"` } func test(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type","application/json") data := // Retrieve message that contain backslash json.NewEncoder(w).Encode(message{Data: data}) } |
`
从其他API接收的数据中是否存在反斜杠。此API将使用双反斜杠发送响应。
示例。
接收到的数据:
响应数据:
我已经设法弄清楚了。这是我得到的。如果我尝试使用
当我尝试发送那些放在JSON字符串中的内容时,我只会遇到问题。因此,有什么方法可以发送没有双反斜杠的数据吗?
几天前我问了几乎相同的问题,这是帖子。
基本上,您不希望数据是
1 2 3 | type message struct { Data interface{} `json:"data"` } |
我认为这也可能适用于您。而且,如果您要使用RESTFul并返回不同类型的结构,则绝对是可行的方法。
您可以创建一个自定义方法,并用单个反斜杠替换两个反斜杠。
诸如此类:
1 2 3 4 5 6 7 8 | func JSONMarshal(v interface{}, backslashEscape bool) ([]byte, error) { b, err := json.Marshal(v) if backslashEscape { b = bytes.Replace(b, []byte(`\\\\`), []byte(`\\`), -1) } return b, err } |