我试图将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":"Name","value":"Ashutosh"}
有人能帮我得到下面的输出吗?:
"{"data":"MyName","value":"Ashutosh"}"
要引用任何字符串,您可以使用strconv.Quote()
:
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"}"