在golang中,有時我們需要將json數(shù)據(jù)轉義為字符串,以便于在網(wǎng)絡傳輸或日志記錄中使用。下面我們就來介紹一下golang中如何進行json轉義字符串。
我們可以使用json包中的Marshal函數(shù)將結構體轉為json字符串。在此過程中,該函數(shù)會自動對需要轉義的字符進行轉義處理。代碼示例如下:
type User struct { Name string `json:"name"` Age int `json:"age"` } func main() { user := User{ Name: "Tom", Age: 18, } jsonData, err := json.Marshal(user) if err != nil { fmt.Println("json.Marshal failed, err:", err) return } jsonStr := string(jsonData) fmt.Println(jsonStr) }
運行以上代碼,輸出結果為:
{"name":"Tom","age":18}
可以看到,輸出結果中的雙引號前都加了反斜杠\",這是進行json轉義后的結果。如果我們需要將該字符串輸出到日志中,需要將雙引號和反斜杠進行進一步轉義。代碼如下:
// 單引號中的轉義為雙反斜杠 escapedJsonStr := strings.ReplaceAll(jsonStr, "\"", "\\\"") // 將雙引號前加上反斜杠 escapedJsonStr = "\"" + escapedJsonStr + "\"" fmt.Println(escapedJsonStr)
以上代碼將輸出以下結果:
"{\"name\":\"Tom\",\"age\":18}"
可以看到,所有的雙引號都變成了\",可以安全輸出到日志中了。