在Go語言中,判斷一個字符串是否是JSON格式可以使用官方提供的Json包中的Unmarshal函數。
func Unmarshal(data []byte, v interface{}) error
Unmarshal函數將JSON數據解析為Go語言的值,如果傳入的字符串不符合JSON格式則會返回解析錯誤(如下所示):
json: cannot unmarshal string into Go value of type struct { }
如果要判斷一個字符串是否符合JSON格式,可以在解析之前使用json.Valid函數判斷:
func Valid(data []byte) bool
Valid函數返回一個布爾值表示該字符串是否為JSON格式,例如:
str := `{ "name": "Alice", "age": 18 }`
if json.Valid([]byte(str)) {
fmt.Println("Valid JSON")
} else {
fmt.Println("Invalid JSON")
}
以上代碼會輸出“Valid JSON”,因為該字符串符合JSON格式。而如果我們修改該字符串使其不符合JSON格式,如下所示:
str := `{ "name": "Alice", "age": 18, }`
if json.Valid([]byte(str)) {
fmt.Println("Valid JSON")
} else {
fmt.Println("Invalid JSON")
}
以上代碼會輸出“Invalid JSON”,因為該字符串不符合JSON格式。注意,我們在第二個屬性的末尾增加了一個逗號,這是不符合JSON格式的。