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

目錄

柚子快報(bào)激活碼778899分享:JSON Schema及其用法

柚子快報(bào)激活碼778899分享:JSON Schema及其用法

http://yzkb.51969.com/

本篇主要介紹JSON Schema的基本語法,必要時(shí)會(huì)使用python代碼來驗(yàn)證。

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

1 Json Schema基本語法

??JSON Schema能校驗(yàn)JSON數(shù)據(jù),但JSON Schema本身也是一種JSON結(jié)構(gòu)。JSON Schema的基本語法中主要包括以下幾個(gè)關(guān)鍵詞:

關(guān)鍵詞說明$schema聲明該模式是根據(jù)標(biāo)準(zhǔn)的特定草案編寫的,主要用于版本控制,可省略;$id定義模式的URI,可省略;title/description描述和注釋信息。不會(huì)對(duì)要校驗(yàn)的JSON數(shù)據(jù)。可省略;type數(shù)據(jù)類型。該關(guān)鍵字會(huì)定義JSON數(shù)據(jù)的第一個(gè)約束,只有當(dāng)type取值為object時(shí),才能指定該shema校驗(yàn)的為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中的關(guān)鍵字為object時(shí)才能校驗(yàn)JSON數(shù)據(jù),但是type關(guān)鍵字還可以有其他取值,并且不同數(shù)據(jù)類型有各自其他限定的關(guān)鍵詞。 type關(guān)鍵字可取值有:object、string、array、integer、number、boolean、null。boolean和null并沒有相關(guān)的限定關(guān)鍵詞,這里就不介紹了。 JSON Schema實(shí)際上是一個(gè)嵌套結(jié)構(gòu),下面的很多關(guān)鍵詞的取值也可以是一個(gè)JSON Schema格式。

2.1 object類型

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

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

具體舉例如下:

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)

具體結(jié)果如下:

Invalid

2.2 string型

string類型限定的關(guān)鍵詞主要有以下:

minLength/maxLength數(shù)值型。字符串的最小長(zhǎng)度、最大長(zhǎng)度;pattern字符串需滿足的正則表達(dá)式;format時(shí)間和日期:“date-time”、“time”、“date"和"duration”; 郵件:“email”,“idn-email”; 域名:“hostname” “idn-hostname”; IP: “ipv4” “ipv6”; 資源標(biāo)識(shí)符:“uuid” “uri” “uri-reference” “iri” “iri-reference” ; uri-template: “uri-template”; json pointer: “json-pointer” “relative-json-pointer”; 正則表達(dá)式:“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型)。所以這里重點(diǎn)介紹number,其限定的關(guān)鍵詞包括以下幾種:

關(guān)鍵詞描述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)

其結(jié)果如下:

Valid

2.4 array型

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

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

舉例如下:

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)

其結(jié)果如下:

Valid

3 其他

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

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

參考資料:

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

柚子快報(bào)激活碼778899分享:JSON Schema及其用法

http://yzkb.51969.com/

相關(guān)閱讀

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

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

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

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

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄