Go檢查字串是否為JSON格式的方式如下。
json.Valid
使用encoding/json
package的Valid
即可確認string是否為JSON格式。
main.go
package main
import (
"encoding/json"
"fmt"
)
var s string = `
{
"id": 1,
"name": "john",
"age": 33,
"createdAt": "2022-01-19T12:34:56Z",
"contact": "{\"name\": \"mary\", \"phones\": [\"0912345678\", \"0912654321\"]}"
}`
func main() {
fmt.Println(json.Valid([]byte(s))) // true
fmt.Println(json.Valid([]byte("{}"))) // true
fmt.Println(json.Valid([]byte("[]"))) // true
fmt.Println(json.Valid([]byte("abc"))) // false
fmt.Println(json.Valid([]byte(nil))) // false
fmt.Println(json.Valid([]byte(""))) // false
}
json.Unmarshal
或直接用json.Unmarshal()
判斷。
main.go
package main
import (
"encoding/json"
"fmt"
)
var s string = `
{
"id": 1,
"name": "john",
"age": 33,
"createdAt": "2022-01-19T12:34:56Z",
"contact": "{\"name\": \"mary\", \"phones\": [\"0912345678\", \"0912654321\"]}"
}`
func main() {
fmt.Println(IsJSON(s)) // true
fmt.Println(IsJSON("{}")) // true
fmt.Println(IsJSON("[]")) // true
fmt.Println(IsJSON("abc")) // false
fmt.Println(IsJSON("")) // false
}
func IsJSON(s string) bool {
var v interface{}
return json.Unmarshal([]byte(s), &v) == nil
}
沒有留言:
張貼留言