我试图将 golang 结构打印为带有转义字符的字符串,但无法做到这一点。
我想像这样打印我的结构:
"{"data":"myname","value":"ashutosh"}"
这是我尝试过的。
package main import ( "encoding/json" "fmt" ) type Resp struct { Data string `json:"data"` Value string `json:"value"` } func main() { var data Resp data.Data = "Name" data.Value = "Ashutosh" r, _ := json.Marshal(data) fmt.Println("MyStruct: ", string(r)) }
但它是这样打印的。
{"data":"名称","value":"ashutosh"}
有人可以帮我得到以下输出吗? :
"{"data":"myname","value":"ashutosh"}"
要引用任何字符串,您可以使用strconv.quote()
: p>
fmt.println("mystruct:", strconv.quote(string(r)))
fmt
包中还有一个用于引用字符串的动词:%q
:
字符串和字节切片(与这些动词等效处理):
%q a double-quoted string safely escaped with go syntax
所以你也可以这样打印:
fmt.printf("mystruct: %q", string(r))
由于这也适用于字节切片,因此您甚至不需要 string
转换:
fmt.printf("mystruct: %q", r)
这些所有输出(在 go playground 上尝试):
MyStruct: "{"data":"Name","value":"Ashutosh"}"