日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python中rapidjson參數校驗實現

瀏覽:162日期:2022-06-14 17:16:07
目錄前言rapidjson簡介和安裝rapidjson基本使用dumps() 方法skipkeysensure_asciisort_keysdump()方法Validator class前言

在使用Django框架開發前后端分離的項目時,通常需要對前端傳遞過來的參數進行校驗,校驗的方式有多種,可以使用drf進行校驗,也可以使用json進行校驗,本文介紹在Python中rapidjson的基本使用以及如何進行參數校驗。

rapidjson簡介和安裝

rapidjson是一個性能非常好的C++ JSON解析器和序列化庫,它被包裝成了Python3的擴展包,就是說在Python3中可以使用rapidjson進行數據的序列化和反序列化操作并且可以對參數進行校驗,非常方便好用。

rapidjson安裝命令:pip install python-rapidjson。

rapidjson基本使用

rapidjson和json模塊在基本使用方法上一致的,只不過rapidjson在某些參數方面和json模塊不兼容,這些參數并不常用,這里不做過多介紹,詳情可參照rapidjson官方文檔。基本使用介紹兩個序列化的方法dump/dumps,反序列化的load/loads使用json模塊的即可。

dumps & dump這兩個方法都是將Python實例對象序列化為JSON格式的字符串,用法和參數大致相同,dump方法比dumps方法多了一個必要的file_like參數。

dumps() 方法

該方法返回的結果是一個Python 字符串實例。參數非常多,這里只介紹經常使用的三個參數。

rapidjson.dumps(obj, *, skipkeys=False, ensure_ascii=True, write_mode=WM_COMPACT, indent=4, default=None, sort_keys=False, number_mode=None, datetime_mode=None, uuid_mode=None, bytes_mode=BM_UTF8, iterable_mode=IM_ANY_ITERABLE, mapping_mode=MM_ANY_MAPPING, allow_nan=True)skipkeys

該參數表示是否跳過不可用的字典的key進行序列化,如果默認為False,如果修改為True字典的key如果不屬于基本數據類型(str int float bool None)之一就會跳過該key而不會拋出TypeError的異常。

import rapidjsonfrom pprint import pprintdic = { True: False, (0,): ’python’}res = rapidjson.dumps(dic)pprint(res) # TypeError: {True: False, (0,): ’python’} is not JSON serializableres = rapidjson.dumps(dic, skipkeys=True)pprint(res) # ’{}’ensure_ascii

該參數表示序列化的結果是否只包含ASCII字符,默認值是True,將Python實例序列化后所有的非ASCII碼的字符都會被轉義,如果將該參數的值修改為False,增會將字符原樣輸出。

dic = { ’name’: ’麗麗’, ’name1’: ’lili’}res = rapidjson.dumps(dic)pprint(res) # ’{'name':'u4E3Du4E3D','name1':'lili'}’res = rapidjson.dumps(dic, ensure_ascii=False)pprint(res) # ’{'name':'麗麗','name1':'lili'}’sort_keys

該參數表示序列化時是否將字典的key按照字母進行排序。默認是False,如果修改為True,字典序列化得到的結果就是按照字典的key的字母順序進行排序的。

dic = { ’name’: ’麗麗’, ’age’: ’10’}res = rapidjson.dumps(dic, ensure_ascii=False, sort_keys=True)pprint(res) # ’{'age':'10','name':'麗麗'}’dump()方法

該方法和dumps方法非常類似,不同的是該方法需要一個額外的必須的參數 - 一個file-like的可寫流式對象,比如文件對象,將第一個參數obj進行序列化寫入可寫的流式對象中。

rapidjson.dump(obj, stream, *, skipkeys=False, ensure_ascii=True, write_mode=WM_COMPACT, indent=4, default=None, sort_keys=False, number_mode=None, datetime_mode=None, uuid_mode=None, bytes_mode=BM_UTF8, iterable_mode=IM_ANY_ITERABLE, mapping_mode=MM_ANY_MAPPING, chunk_size=65536, allow_nan=True)

下面是該方法的基本使用:

# 寫入文件dic = { ’name’: ’麗麗’, ’age’: ’10’}f = open(’1.py’, ’w’, encoding=’utf8’)res = rapidjson.dump(dic, f)pprint(res)# 或者下面這種用法import iostream = io.BytesIO()dump(’bar’, stream)print(stream.getvalue()) # b’'bar'’Validator class

rapidjson中的Validator類可以用來做參數校驗。Validator的參數是JSON schema,當我們需要知道JSON數據中預期的字段以及值的表示方式時,這就是JSON Schema的用武之地,是描述JSON數據結構的一種聲明格式,也可以通俗的理解為是參數的校驗規則。如果JSON schema是不可用的JSON格式的數據,就會拋出JSONDecodeError的異常。

類的參數就是校驗規則,如果給定的JSON數據沒有通過校驗就會拋出ValidationError異常,異常包括三個部分,分別是錯誤的類型、校驗的規則以及在JSON字符串中錯誤出現的位置。

import rapidjsonfrom pprint import pprintvalidate = rapidjson.Validator(’{'required': ['a', 'b']}’) # 表示a和b這兩個參數是必須的validate(’{'a': null, 'b': 1}’) # 符合規則validate(’{'a': null, 'c': false}’) # rapidjson.ValidationError: (’required’, ’#’, ’#’)

validate = rapidjson.Validator(’{'type': 'array',’ # 參數類型是array ’ 'items': {'type': 'string'},’ # array中的每個元素類型是string ’ 'minItems': 1}’) # array中元素數量最少為1validate(’['foo', 'bar']’) # 符合規則validate(’[]’) # rapidjson.ValidationError: (’minItems’, ’#’, ’#’)

關于JSON schema的更多參數校驗規則以及定義規范可以參考*JSON schema官方文檔*,下述是一種JSON schema格式僅供參考:

LOGIN_SCHEMA = { 'type': 'object', 'properties': {'token': 'string','number': 'integer' }, 'required': ['token'],} }validate = rapidjson.Validator(rapidjson.dumps(LOGIN_SCHEMA))data = { ’token’: ’python’, ’number’: 10}validate(rapidjson.dumps(data))

到此這篇關于Python中rapidjson參數校驗實現的文章就介紹到這了,更多相關Python rapidjson參數校驗內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python rapidjson
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲aⅴ网站| 在线国产精品一区| 青青草精品视频| 亚洲专区视频| 9999国产精品| 亚洲欧美一级| 日韩专区在线视频| 久久国产人妖系列| 国内揄拍国内精品久久| 91欧美极品| 国产精品激情电影| 精品欠久久久中文字幕加勒比| 国产专区精品| 91精品蜜臀一区二区三区在线| 精品捆绑调教一区二区三区| 国产精品99一区二区| 日韩影院精彩在线| 日韩av一区二区三区| 国产精品美女久久久久久不卡| 国产欧美自拍| 蜜臀国产一区| 日韩中文字幕麻豆| 麻豆91小视频| 特黄特色欧美大片| 美国欧美日韩国产在线播放| 国产欧美一区二区色老头| 成人三级高清视频在线看| 免费精品视频| 美女毛片一区二区三区四区最新中文字幕亚洲 | 国产精品亚洲四区在线观看 | 久久国产生活片100| 伊伊综合在线| 美女精品在线| 在线中文字幕播放| 免费精品视频在线| www.九色在线| 日韩av在线播放中文字幕| 久久久久免费av| 国产精品成人国产| 久久亚洲视频| 激情丁香综合| 国产成年精品| 久久中文字幕二区| 亚洲免费观看高清完整版在线观| 国产精品亚洲综合在线观看| 久久国内精品视频| 亚洲一区日韩在线| 国产96在线亚洲| 亚洲免费成人av在线| 久久国产直播| 久久久久久夜| 国产精品777777在线播放| 日韩在线观看一区二区| 国产亚洲一区二区手机在线观看 | 视频一区在线视频| 人人草在线视频| 久久久久九九精品影院| 日韩中文字幕一区二区高清99| 久久精品在线| 日韩精品1区| 老司机免费视频一区二区三区| 日本精品另类| 欧美中文高清| 国产精品亚洲一区二区在线观看| 日韩精品视频在线看| 日韩精品一二区| 亚洲一区欧美激情| 丝袜美腿一区二区三区| 一本色道精品久久一区二区三区| 日韩免费一区| 激情久久婷婷| 免费欧美在线视频| 日本精品一区二区三区在线观看视频| 免费人成网站在线观看欧美高清| 老鸭窝亚洲一区二区三区| 狠狠色综合网| 在线精品视频一区| 日韩和欧美一区二区三区| 久久精品97| а√天堂8资源中文在线| 深夜福利视频一区二区| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 成人国产综合| 欧美日韩精品一区二区视频| 午夜在线精品偷拍| 久久国产欧美日韩精品| 亚洲风情在线资源| 亚洲影视一区| 国产欧洲在线| 亚洲精品第一| 91一区二区三区四区| 视频一区视频二区中文字幕| 久久精品色播| 亚洲激情精品| 麻豆精品av| 久久最新视频| 亚洲一级少妇| 久久国产婷婷国产香蕉| 亚洲网站视频| 精品久久电影| 亚洲69av| 狠狠爱www人成狠狠爱综合网| 国产欧美亚洲精品a| 精品欧美久久| 高清av一区| 国产日韩亚洲| 亚洲伊人精品酒店| 性感美女一区二区在线观看| 亚洲欧美网站在线观看| 日本欧美不卡| 欧美好骚综合网| 国产精品亲子伦av一区二区三区 | 国产一区二区精品久| 日韩综合一区二区| 91精品1区| 亚洲成人不卡| 91麻豆国产自产在线观看亚洲| 日本va欧美va瓶| 亚洲丝袜美腿一区| 99精品99| 黄色国产精品| 九一成人免费视频| 久久久久久一区二区| 国产精品777777在线播放| 国产亚洲精品美女久久 | 欧美成人一二区| 欧美一区91| 日韩av网站在线免费观看| 视频精品一区二区| 亚洲欧美网站在线观看| 亚洲一区av| 欧美伊人影院| 欧美国产专区| 久久精品国产99国产精品| 日韩高清不卡一区二区| 视频精品一区| 日韩福利视频一区| 国产亚洲一区二区三区不卡| 国产欧美高清视频在线| 国产精品白浆| 红杏一区二区三区| 亚洲爱爱视频| 国产精品美女久久久| 五月国产精品| 国产精品xxx在线观看| 亚洲va中文在线播放免费| 亚洲国产专区校园欧美| 视频一区免费在线观看| 日韩av一区二区在线影视| 日韩av中文字幕一区二区三区| 国产午夜精品一区在线观看| 久久精品国产网站| 激情婷婷欧美| 四虎精品永久免费| 福利一区在线| 美女久久一区| 97国产精品| 久久亚洲电影| 正在播放日韩精品| 日韩高清在线观看一区二区| 日本激情一区| 亚洲欧洲免费| 欧美xxxx性| 国产综合视频| 99久久www免费| 亚洲精品美女91| 另类小说一区二区三区| 亚洲先锋成人| 美女精品视频在线| 男女男精品视频网| 日韩国产综合| 国产精品亚洲片在线播放| 亚洲午夜电影| jizzjizz中国精品麻豆| 青草国产精品| 国产午夜久久| 午夜久久中文| 国产精品亚洲一区二区在线观看| 一区二区亚洲精品| 激情不卡一区二区三区视频在线| 中文字幕视频精品一区二区三区 | 99久久精品网| av资源中文在线天堂| 国产精品网在线观看| 午夜一区在线| 欧美日韩国产免费观看 | 性色一区二区| 91高清一区| 女人天堂亚洲aⅴ在线观看| 亚洲黄色中文字幕| 日本欧美一区| 日韩在线电影| 噜噜噜躁狠狠躁狠狠精品视频| 欧美福利一区| 午夜国产精品视频免费体验区| 久久精品导航| 欧美 日韩 国产精品免费观看| 999久久久亚洲| 美女网站一区| 免费在线观看视频一区|