欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在.net項(xiàng)目使用JSONSchema示例詳解

 更新時(shí)間:2022年05月13日 11:08:51   作者:usday  
這篇文章主要為大家介紹了在.net項(xiàng)目使用JSONSchema的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

最近公司要做配置項(xiàng)的改造,要把a(bǔ)ppsettings.json的內(nèi)容放到數(shù)據(jù)庫,經(jīng)過分析還是用json的方式存儲(chǔ)最為方便,項(xiàng)目改動(dòng)性最小,這就牽扯到一個(gè)問題,怎么驗(yàn)證json的格式:

最終考慮兩種方案供大家參考:

第一,建立對(duì)應(yīng)的實(shí)體類,反序列化之后再序列化成json字符串,這樣可以在結(jié)構(gòu)上保證對(duì)應(yīng)json串的格式不出錯(cuò),但是不好驗(yàn)證內(nèi)容的正確性。一定程度上保證了數(shù)據(jù)的正確性,再加上使用這個(gè)功能的人員也都是相關(guān)的技術(shù)人員,有一定的可行性。代碼上的快,人一定很帥,上代碼:

 var jsonStr = "{\"Name\":\"你好\",\"PhoneNumber\":\"170*****889\",\"Zone\":\"Commerial\"}";
 var build = JsonConvert.DeserializeObject(jsonStr); 
 jsonStr = JsonConvert.SerializeObject(build);

第二,JSON Schema的方式來驗(yàn)證json格式,那簡直就是為你而生為你而來,什么是json schema呢?咱們先通過下面好好了解一下:

(百度百科) 什么是json Schema:

jsonschema是描述你的JSON數(shù)據(jù)格式;JSON模式(應(yīng)用程序/模式+ JSON)有多種用途,其中之一就是實(shí)例驗(yàn)證。驗(yàn)證過程可以是交互式或非交互式的。

話不多說,先上代碼,讓我們一睹她的面容:

{
  "type": "object",
  "properties": {
    "Name": {
      "type": "string",
      "maxLength": 100
    },
    "PhoneNumber": {
      "type": "string",
      "format": "phone"
    },
    "Zone": {
      "type": "string",
      "enum": [
        "Residential",
        "Commercial",
        "Industrial"
      ]
    }
  },
  "required": [
    "Name",
    "PhoneNumber",
    "Zone"
  ]
}

這不也是json嗎,還搞得這么神秘?

對(duì),就是json,是描述json格式的json。

那我們就開始對(duì)這個(gè)json分解,慢慢欣賞.

type,properties,required都是干嘛的呢?

先留給你們幾分鐘自己了解下:

http://www.dbjr.com.cn/article/247934.htm

看到這里,想必大家對(duì)json Schema不再陌生了吧。是不是更想了解她,得到她呢?下面我就給大家介紹一個(gè)工具來生成她,程序員做夢(mèng)都想的一個(gè)事情就是new一個(gè)女朋友,這就來了:

 JSchemaGenerator generator = new JSchemaGenerator();
 JSchema schema = generator.Generate(typeof(類名));

這里以Newtonsoft.Json.Schema為例子:

類名舉個(gè)例子為:Building

  public class Building {
        [Required]
        [MaxLength(100)]
        public string Name { get; set; }
        [Required]
        [Phone]
        public string PhoneNumber { get; set; }
        [Required]
        [EnumDataType(typeof(BuildingZone))]
        public string Zone { get; set; }
    }

DataTypeAttribute 類 請(qǐng)參考:

https://docs.microsoft.com/zh-cn/dotnet/api/system.componentmodel.dataannotations.datatypeattribute?view=net-6.0

生成的schema為:

{
  "type": "object",
  "properties": {
    "Name": {
      "type": "string",
      "maxLength": 100
    },
    "PhoneNumber": {
      "type": "string",
      "format": "phone"
    },
    "Zone": {
      "type": "string",
      "enum": [
        "Residential",
        "Commercial",
        "Industrial"
      ]
    }
  },
  "required": [
    "Name",
    "PhoneNumber",
    "Zone"
  ]
}

這是這么簡單就得到了我們的女主角schema, 讓我們的schema生出我們對(duì)應(yīng)的json吧。還需要一個(gè)工具:

https://form.lljj.me/index.html#/demo?ui=VueElementForm&type=Simple

拿到我們的json數(shù)據(jù):

{
    "Name": "張三",
    "PhoneNumber": "18856881888",
    "Zone": "Residential"
}

怎么驗(yàn)證到底是不是親生的呢?肯定要后臺(tái)驗(yàn)證了:

  var person = JObject.Parse(json);
  bool valid = person.IsValid(schema);

valid 就是化驗(yàn)結(jié)果了,此時(shí)拿到結(jié)果的我確有點(diǎn)猶豫了,更多關(guān)于.net使用JSONSchema的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論