欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:JSON Schema及其用法

柚子快報激活碼778899分享:JSON Schema及其用法

http://yzkb.51969.com/

本篇主要介紹JSON Schema的基本語法,必要時會使用python代碼來驗證。

??JSON Schema是一種用于描述JSON數(shù)據(jù)的規(guī)范,可以用來定義JSON數(shù)據(jù)對象的結構、格式和約束條件。通過JSON Schema,可以對JSON數(shù)據(jù)進行驗證、校驗和文檔化,確保數(shù)據(jù)的正確性和完整性。

1 Json Schema基本語法

??JSON Schema能校驗JSON數(shù)據(jù),但JSON Schema本身也是一種JSON結構。JSON Schema的基本語法中主要包括以下幾個關鍵詞:

關鍵詞說明$schema聲明該模式是根據(jù)標準的特定草案編寫的,主要用于版本控制,可省略;$id定義模式的URI,可省略;title/description描述和注釋信息。不會對要校驗的JSON數(shù)據(jù)??墒÷?;type數(shù)據(jù)類型。該關鍵字會定義JSON數(shù)據(jù)的第一個約束,只有當type取值為object時,才能指定該shema校驗的為JSON數(shù)據(jù);

具體舉例如下:

from jsonschema import validate

schema={"type": "string"}

schema1={ "type":"object"}

data={ "message": "Hello"}

def json_validate(data,schema):

try:

validate(instance=data, schema=schema)

print("Valid")

except:

print("Invalid")

json_validate(data,schema)

json_validate(data,schema1)

其輸出內(nèi)容為:

Invalid Valid

2 JSON Schema類型

??雖然前文中type中的關鍵字為object時才能校驗JSON數(shù)據(jù),但是type關鍵字還可以有其他取值,并且不同數(shù)據(jù)類型有各自其他限定的關鍵詞。 type關鍵字可取值有:object、string、array、integer、number、boolean、null。boolean和null并沒有相關的限定關鍵詞,這里就不介紹了。 JSON Schema實際上是一個嵌套結構,下面的很多關鍵詞的取值也可以是一個JSON Schema格式。

2.1 object類型

object類型類似于Python中的字典(dict)類型,其限定關鍵詞主要有以下幾個:

關鍵詞說明propertiesobject類型。其中每個鍵是待校驗的JSON中屬性的名稱,值是用于驗證該屬性的模式。此關鍵字將忽略與properties關鍵字中的任何鍵名稱不匹配的任何屬性;patternPropertiesobject類型。如果待校驗的JSON中屬性的名稱與給定的正則表達式匹配,則屬性值必須符合指定的模式;additionalProperties取值為true/false。是否允許待校驗的JSON中存在未在properties屬性中或不符合patternProperties中的模式的鍵值;requiredList型。待校驗的JSON中必須存在的鍵值。也就是說patternProperties中指定的鍵值不是必須存在的;minProperties數(shù)值。待校驗的JSON中必須滿足的最小屬性個數(shù);maxProperties數(shù)值。待校驗的JSON中必須滿足的最大屬性個數(shù);propertyNames待校驗的JSON中屬性名稱必須滿足的模式;可以配合pattern關鍵詞使用;

具體舉例如下:

from jsonschema import validate

schema={

"type": "object",

"properties": {

"message": {"type": "string"}

},

"required": ["message","role"],

"additionalProperties": False,

}

data={

"role":"system",

"message":"你是誰啊"

}

def json_validate(data,schema):

try:

validate(instance=data, schema=schema)

print("Valid")

except:

print("Invalid")

json_validate(data,schema)

具體結果如下:

Invalid

2.2 string型

string類型限定的關鍵詞主要有以下:

minLength/maxLength數(shù)值型。字符串的最小長度、最大長度;pattern字符串需滿足的正則表達式;format時間和日期:“date-time”、“time”、“date"和"duration”; 郵件:“email”,“idn-email”; 域名:“hostname” “idn-hostname”; IP: “ipv4” “ipv6”; 資源標識符:“uuid” “uri” “uri-reference” “iri” “iri-reference” ; uri-template: “uri-template”; json pointer: “json-pointer” “relative-json-pointer”; 正則表達式:“regex”

舉例如下:

from jsonschema import validate

schema={

"type": "object",

"properties": {

"message": {"type": "string"},

'date': {"type": "string",

"format": "date"}

},

"required": ["message","role"],

"additionalProperties": True,

}

data={

"role":"system",

"message":"你是誰啊",

"date":"2024-03-30"

}

def json_validate(data,schema):

try:

validate(instance=data, schema=schema)

print("Valid")

except:

print("Invalid")

json_validate(data,schema)

2.3 numeric型

JSON schema中的numeric型有兩種取值:number(類似于Python中的float型和int型)和integer(僅類似于Python中int型)。所以這里重點介紹number,其限定的關鍵詞包括以下幾種:

關鍵詞描述multipleOf正整數(shù)。數(shù)值必須為給定值的倍數(shù);minimum數(shù)值必須大于等于該值;maximum數(shù)值必須小于等于該值;exclusiveMinimum數(shù)值必須大于該值;exclusiveMaximum數(shù)值必須小于該值;

舉例如下:

from jsonschema import validate

schema={

"type": "object",

"properties": {

"num":{"type":"number",

"multiplesOf":10,

"miximum":20,

"maximum":300}

}

}

data={

"num":230

}

def json_validate(data,schema):

try:

validate(instance=data, schema=schema)

print("Valid")

except:

print("Invalid")

json_validate(data,schema)

其結果如下:

Valid

2.4 array型

array型類似于類似于python中的list型和tuple型,其限定的關鍵詞主要有以下:

關鍵詞描述itemsobject型。用于驗證數(shù)組中的所有項;prefixItemsList型。按索引驗證tuple中的每一個項。此時若將items設置為false, 那么元組中將不允許有其他項;containsobject型。數(shù)組中至少要包含的項;unevaluatedItemstrue/false, 數(shù)組中是否允許任何未在items、prefixItems和contains指定的數(shù)據(jù)項存在;minItems最小的元組數(shù);maxItems最大的元組數(shù);uniqueItemstrue/false, 數(shù)據(jù)項是否要求是唯一的;

舉例如下:

from jsonschema import validate

schema={

"type": "object",

"properties": {

"num": {

"type": "array",

"prefixItrems": [

{ "type": "number"},

{"type":"string"}

],

"unevaluatedItems": True

}

}

}

data={"num":[1,'hello',5.4]}

def json_validate(data,schema):

try:

validate(instance=data, schema=schema)

print("Valid")

except:

print("Invalid")

json_validate(data,schema)

其結果如下:

Valid

3 其他

除了以上介紹的關鍵詞之外,還有一些其他的常用關鍵詞,具體如下:

enum: 枚舉類型。const:常數(shù)。contentMediaType:contentEncoding:

參考資料:

https://json-schema.org/understanding-json-schema/referencehttps://zhuanlan.zhihu.com/p/72607132

柚子快報激活碼778899分享:JSON Schema及其用法

http://yzkb.51969.com/

相關閱讀

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權,聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19245395.html

發(fā)布評論

您暫未設置收款碼

請在主題配置——文章設置里上傳

掃描二維碼手機訪問

文章目錄