如何打印结构体作为一个普通的字符串与转义字符在golang?



我试图将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"}"

最新更新