網頁

2022/5/19

Golang 檢查字串是否為JSON格式 check string is json format

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
}


沒有留言:

張貼留言