婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python中rapidjson參數(shù)校驗(yàn)實(shí)現(xiàn)

Python中rapidjson參數(shù)校驗(yàn)實(shí)現(xiàn)

熱門標(biāo)簽:長春極信防封電銷卡批發(fā) 企業(yè)彩鈴地圖標(biāo)注 如何地圖標(biāo)注公司 電銷機(jī)器人錄音要學(xué)習(xí)什么 煙臺電話外呼營銷系統(tǒng) 上海正規(guī)的外呼系統(tǒng)最新報(bào)價(jià) 外賣地址有什么地圖標(biāo)注 預(yù)覽式外呼系統(tǒng) 銀川電話機(jī)器人電話

前言

在使用Django框架開發(fā)前后端分離的項(xiàng)目時(shí),通常需要對前端傳遞過來的參數(shù)進(jìn)行校驗(yàn),校驗(yàn)的方式有多種,可以使用drf進(jìn)行校驗(yàn),也可以使用json進(jìn)行校驗(yàn),本文介紹在Python中rapidjson的基本使用以及如何進(jìn)行參數(shù)校驗(yàn)。

rapidjson簡介和安裝

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

rapidjson安裝命令:pip install python-rapidjson

rapidjson基本使用

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

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

dumps() 方法

該方法返回的結(jié)果是一個(gè)Python 字符串實(shí)例。參數(shù)非常多,這里只介紹經(jīng)常使用的三個(gè)參數(shù)。

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

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

import rapidjson
from pprint import pprint

dic = {
    True: False,
    (0,): 'python'
}
res = rapidjson.dumps(dic)
pprint(res)  # TypeError: {True: False, (0,): 'python'} is not JSON serializable

res = rapidjson.dumps(dic, skipkeys=True)
pprint(res)  # '{}'

ensure_ascii

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

dic = {
    'name': '麗麗',
    'name1': 'lili'
}
res = rapidjson.dumps(dic)
pprint(res)   # '{"name":"\\u4E3D\\u4E3D","name1":"lili"}'

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

sort_keys

該參數(shù)表示序列化時(shí)是否將字典的key按照字母進(jìn)行排序。默認(rèn)是False,如果修改為True,字典序列化得到的結(jié)果就是按照字典的key的字母順序進(jìn)行排序的。

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

dump()方法

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

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 io

stream = io.BytesIO()
dump('bar', stream)
print(stream.getvalue())  # b'"bar"'

Validator class

rapidjson中的Validator類可以用來做參數(shù)校驗(yàn)。Validator的參數(shù)是JSON schema,當(dāng)我們需要知道JSON數(shù)據(jù)中預(yù)期的字段以及值的表示方式時(shí),這就是JSON Schema的用武之地,是描述JSON數(shù)據(jù)結(jié)構(gòu)的一種聲明格式,也可以通俗的理解為是參數(shù)的校驗(yàn)規(guī)則。如果JSON schema是不可用的JSON格式的數(shù)據(jù),就會拋出JSONDecodeError的異常。

類的參數(shù)就是校驗(yàn)規(guī)則,如果給定的JSON數(shù)據(jù)沒有通過校驗(yàn)就會拋出ValidationError異常,異常包括三個(gè)部分,分別是錯(cuò)誤的類型、校驗(yàn)的規(guī)則以及在JSON字符串中錯(cuò)誤出現(xiàn)的位置。

import rapidjson
from pprint import pprint

validate = rapidjson.Validator('{"required": ["a", "b"]}')  # 表示a和b這兩個(gè)參數(shù)是必須的
validate('{"a": null, "b": 1}')  # 符合規(guī)則
validate('{"a": null, "c": false}')  # rapidjson.ValidationError: ('required', '#', '#')

validate = rapidjson.Validator('{"type": "array",'  # 參數(shù)類型是array
                     ' "items": {"type": "string"},'  # array中的每個(gè)元素類型是string
                     ' "minItems": 1}')  # array中元素?cái)?shù)量最少為1

validate('["foo", "bar"]')  # 符合規(guī)則
validate('[]')  #  rapidjson.ValidationError: ('minItems', '#', '#')

關(guān)于JSON schema的更多參數(shù)校驗(yàn)規(guī)則以及定義規(guī)范可以參考*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))

到此這篇關(guān)于Python中rapidjson參數(shù)校驗(yàn)實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python rapidjson參數(shù)校驗(yàn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python常用配置文件ini、json、yaml讀寫總結(jié)
  • Python中json.load()和json.loads()有哪些區(qū)別
  • Python中json.dumps()函數(shù)的使用解析
  • python 存儲json數(shù)據(jù)的操作
  • 解決python3 json數(shù)據(jù)包含中文的讀寫問題
  • python json.dumps中文亂碼問題解決
  • Python如何把不同類型數(shù)據(jù)的json序列化
  • python之json文件轉(zhuǎn)xml文件案例講解

標(biāo)簽:上饒 潮州 宜昌 湖北 西寧 盤錦 佳木斯 珠海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python中rapidjson參數(shù)校驗(yàn)實(shí)現(xiàn)》,本文關(guān)鍵詞  Python,中,rapidjson,參數(shù),校驗(yàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python中rapidjson參數(shù)校驗(yàn)實(shí)現(xiàn)》相關(guān)的同類信息!
  • 本頁收集關(guān)于Python中rapidjson參數(shù)校驗(yàn)實(shí)現(xiàn)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    中文字幕人成不卡一区| 久久久不卡网国产精品二区| 欧美美女喷水视频| 亚洲综合丁香婷婷六月香| www.99精品| 一区二区在线免费观看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 《视频一区视频二区| 色香色香欲天天天影视综合网| 亚洲少妇最新在线视频| 一本大道久久a久久综合| 亚洲一区二区三区四区在线免费观看| 欧美色综合影院| 免费在线观看一区二区三区| 日韩欧美中文字幕一区| 国产传媒日韩欧美成人| 18成人在线视频| 欧美区视频在线观看| 国产伦精品一区二区三区在线观看| 久久久精品tv| 欧美在线free| 狠狠色狠狠色综合日日91app| 国产精品久久精品日日| 欧美男人的天堂一二区| 国产成人在线观看免费网站| 一区二区三区色| 精品99999| 欧美中文字幕不卡| 久久精品国产澳门| 亚洲精品乱码久久久久久日本蜜臀| 3d动漫精品啪啪| 94-欧美-setu| 国产麻豆成人精品| 午夜伊人狠狠久久| 国产精品国产三级国产专播品爱网| 色美美综合视频| 成人夜色视频网站在线观看| 天天色图综合网| 亚洲欧洲制服丝袜| 久久人人超碰精品| 欧美精品久久99| 在线一区二区三区| 国产精品一二三在| 捆绑紧缚一区二区三区视频| 亚洲尤物视频在线| 亚洲视频香蕉人妖| 国产精品欧美一区喷水| 欧美一区二区在线播放| 91美女精品福利| 99国产精品久| 成人免费av在线| 国产高清精品网站| 成人精品国产免费网站| 五月天一区二区| 一二三区精品福利视频| 亚洲天堂免费在线观看视频| 国产精品久线在线观看| 久久奇米777| 久久久久久久网| 欧美一级片在线看| 欧美一区二区大片| 欧美亚洲精品一区| 欧美亚洲高清一区二区三区不卡| 99久久免费精品高清特色大片| 成人三级在线视频| 99久久综合国产精品| 99久久er热在这里只有精品15| 国产成人激情av| caoporen国产精品视频| av毛片久久久久**hd| 色综合天天综合网天天狠天天| 一本色道a无线码一区v| 欧美在线视频你懂得| 欧美日韩成人激情| 精品少妇一区二区三区在线播放| 日韩亚洲电影在线| 久久综合九色综合欧美就去吻 | 欧美网站大全在线观看| 欧美性猛交一区二区三区精品| 欧美日韩一级二级三级| 欧美大尺度电影在线| 精品国产三级a在线观看| 国产亚洲自拍一区| 日韩伦理av电影| 亚洲国产一区二区三区 | 亚洲一区二区免费视频| 日韩中文欧美在线| 国产一区二区日韩精品| av资源网一区| 亚洲男帅同性gay1069| 亚洲美女免费在线| 日韩主播视频在线| 国产成人夜色高潮福利影视| 成人av集中营| 欧美一卡二卡三卡四卡| 国产日韩欧美a| 亚洲高清视频的网址| 国产精品亚洲视频| 欧美少妇一区二区| 久久新电视剧免费观看| 亚洲一区二区三区爽爽爽爽爽| 激情综合色综合久久综合| 91国模大尺度私拍在线视频| 精品欧美久久久| 亚洲h动漫在线| 99国产精品久| 国产调教视频一区| 日日夜夜免费精品视频| 99精品欧美一区| 精品久久久久一区| 亚洲一二三区视频在线观看| 国产成人自拍网| 日韩欧美综合在线| 亚洲一区二区欧美日韩| 99re成人精品视频| 久久蜜臀精品av| 免费在线看成人av| 欧美性生活影院| 一区二区三区免费网站| 国产成人午夜精品影院观看视频| 欧美群妇大交群的观看方式| 亚洲黄色尤物视频| 91在线一区二区三区| 国产精品成人在线观看| 国产一二三精品| 久久综合五月天婷婷伊人| 亚洲成人av福利| 久久精品人人爽人人爽| 国内精品嫩模私拍在线| 日韩欧美在线网站| 丝袜诱惑制服诱惑色一区在线观看| 91丨porny丨蝌蚪视频| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 91网站视频在线观看| 久久婷婷成人综合色| 看片网站欧美日韩| 精品日本一线二线三线不卡| 日本欧美一区二区三区| 精品污污网站免费看| 亚洲福利国产精品| 6080午夜不卡| 美女性感视频久久| 欧美精品乱人伦久久久久久| 成人毛片老司机大片| 欧美成人性福生活免费看| 奇米777欧美一区二区| 日韩一区二区三区av| 精彩视频一区二区| 中文字幕av一区二区三区免费看 | 97久久精品人人爽人人爽蜜臀 | 成人三级在线视频| 1024成人网| 欧美日韩二区三区| 韩国成人在线视频| 国产精品久久久久久妇女6080 | 日韩av一区二区在线影视| 69av一区二区三区| 国产乱码精品一区二区三| 中文字幕亚洲电影| 欧美日韩卡一卡二| 精品一区二区精品| 亚洲欧洲色图综合| 日韩欧美区一区二| 福利电影一区二区| 亚洲综合自拍偷拍| 欧美美女bb生活片| 丁香网亚洲国际| 丝袜诱惑亚洲看片| 国产精品久久久久9999吃药| 欧美日韩一卡二卡| 豆国产96在线|亚洲| 亚洲成人动漫在线观看| 久久久蜜桃精品| 欧美在线播放高清精品| 精品亚洲国产成人av制服丝袜| 国产精品久久毛片av大全日韩| 欧美日韩一区二区三区在线| 国内精品久久久久影院薰衣草| 国产精品福利影院| 日韩一区二区三区在线观看| 91色九色蝌蚪| 国产91高潮流白浆在线麻豆| 亚洲成人自拍偷拍| 中文一区二区在线观看| 欧美精品日韩综合在线| 91在线精品秘密一区二区| 精东粉嫩av免费一区二区三区| 国产精品久久久久久久久免费樱桃 | 日韩美一区二区三区| 色婷婷国产精品| 成人网男人的天堂| 捆绑变态av一区二区三区| 亚洲成人久久影院| 一区二区三区加勒比av| 欧美国产一区视频在线观看| 日韩欧美的一区| 欧美一区二区观看视频| 色香色香欲天天天影视综合网| 国产69精品久久99不卡| 国内精品久久久久影院色|