golang提供了對json schema的支持,讓我們能夠方便地驗證json數據的合法性。
package main import ( "fmt" "github.com/xeipuuv/gojsonschema" ) func main() { schemaLoader := gojsonschema.NewReferenceLoader("file://schema.json") // 加載schema dataLoader := gojsonschema.NewStringLoader(`{"name":"alex","age":20}`) // 加載要驗證的json數據 result, err := gojsonschema.Validate(schemaLoader, dataLoader) // 驗證 if err != nil { panic(err.Error()) } if result.Valid() { fmt.Printf("Valid!\n") // 數據合法 } else { fmt.Printf("Invalid!\n") // 數據不合法 for _, desc := range result.Errors() { fmt.Printf("%s\n", desc) } } }
上面的代碼演示了如何使用gojsonschema驗證json數據的合法性。首先使用NewReferenceLoader加載json schema,然后使用NewStringLoader加載要驗證的json數據。調用gojsonschema.Validate進行驗證,如果返回的result對象是Valid,則說明數據合法,否則會打印出所有不合法的信息。
在schema.json中定義了一個對象,包含了name和age兩個屬性。如果要驗證的json數據不符合這個schema,則會提示數據不合法。
{ "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "properties": { "name": {"type": "string"}, "age": {"type": "number"} } }
以上就是golang中使用json schema進行數據驗證的簡單例子。