Golang 中的 json 包提供了將結構體等類型轉換為 JSON 字符串的功能,而在實際開發過程中,我們常常需要在字符串中加入斜杠等特殊字符。接下來,我們將講解如何在 golang 中使用 json 包將含有斜杠的字符串轉換為 JSON 字符串。
type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { person := Person{ Name: "Tom", Age: 18, } jsonBytes, err := json.Marshal(person) if err != nil { fmt.Println(err) return } jsonString := string(jsonBytes) jsonStringWithSlash := strings.ReplaceAll(jsonString, "/", "\\/") fmt.Println(jsonStringWithSlash) }
以上是一個簡單的示例。我們定義了一個 Person 結構體,并將其轉換為 JSON 對象。其中,string 類型的字符串字段可能會帶有斜杠。接著,我們使用 strings 包中的 ReplaceAll 方法將斜杠替換為 \\/,得到最終的 JSON 字符串。
需要注意的是,在將 JSON 對象反序列化為結構體時,我們需要對斜杠進行還原,否則將會出現解析錯誤。
func main() { jsonStringWithSlash := "{\"name\":\"Tom\",\"age\":18,\"desc\":\"I\\u0027m \\\\Tom\\/\\\\\"}" jsonString := strings.ReplaceAll(jsonStringWithSlash, "\\/", "/") var person Person err := json.Unmarshal([]byte(jsonString), &person) if err != nil { fmt.Println(err) return } fmt.Println(person) }
在以上示例中,我們定義一個含有 desc 字段的 JSON 字符串,其中包含有轉義后的斜杠。接著,我們使用字符串替換將 \\/ 替換為 /,得到還原后的 JSON 字符串。最后,我們使用 json.Unmarshal 方法將 JSON 字符串反序列化為結構體,得到 Person 結構體對象。
綜上所述,我們講解了 golang 中將含有斜杠的字符串轉換為 JSON 字符串的方法,希望對您在實際開發中遇到的問題有所幫助。