使用Golang解析轉(zhuǎn)義后的JSON是一個比較常見的操作。在處理JSON數(shù)據(jù)的時候,有時候我們需要把特殊字符進(jìn)行轉(zhuǎn)義,例如將"<"轉(zhuǎn)義為"\<",將">"轉(zhuǎn)義為"\>"等。那么接下來我們就來看如何使用Golang對轉(zhuǎn)義后的JSON進(jìn)行解析。
import ( "encoding/json" "fmt" ) type Login struct { Username string `json:"username"` Password string `json:"password"` } func main() { jsonStr := `{\"username\":\"John Doe\", \"password\":\"1234567\"}` var login Login err := json.Unmarshal([]byte(jsonStr), &login) if err != nil { fmt.Println("解析JSON字符串失敗:", err.Error()) return } fmt.Println("解析結(jié)果:", login) }
在上面的代碼中,我們首先定義了一個Login結(jié)構(gòu)體,用來存儲解析后的JSON數(shù)據(jù)。在main方法中,我們定義了一個轉(zhuǎn)義后的JSON字符串,接著我們調(diào)用Unmarshal方法來將該JSON字符串解析成Login結(jié)構(gòu)體。
需要注意的是,我們在調(diào)用Unmarshal方法時,需要將字符串轉(zhuǎn)換成[]byte類型,因為Unmarshal方法接收的參數(shù)是[]byte類型。
另外,我們在JSON String中手動對引號進(jìn)行了轉(zhuǎn)義。如果沒有進(jìn)行手動轉(zhuǎn)義的話,Golang會自動對引號進(jìn)行轉(zhuǎn)義,所以我們無需擔(dān)心引號的問題。