Python 에서 rapidjson 매개 변수 검증 실현

머리말
Django 프레임 워 크 를 사용 하여 전후 단 분 리 된 프로젝트 를 개발 할 때 전단 에서 전 달 된 매개 변 수 를 검증 해 야 합 니 다.검증 하 는 방식 은 여러 가지 가 있 습 니 다.drf 를 사용 하여 검증 할 수도 있 고 json 을 사용 하여 검증 할 수도 있 습 니 다.본 고 는 Python 에서 rapidjson 의 기본 적 인 사용 과 매개 변 수 를 어떻게 검증 하 는 지 소개 합 니 다.
rapidjson 소개 및 설치
rapidjson 은 성능 이 매우 좋 은 C+JSON 해상도 와 직렬 화 라 이브 러 리 로 Python 3 의 확장 패키지 로 포장 되 어 있 습 니 다.즉,Python 3 에서 rapidjson 을 사용 하여 데이터 의 직렬 화 와 반 직렬 화 작업 을 할 수 있 고 매개 변 수 를 검사 할 수 있어 서 매우 편리 합 니 다.
rapidjson 설치 명령:pip install python-rapidjsonrapidjson 기본 사용
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)중 하나 에 속 하지 않 으 면 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
이 매개 변 수 는 서열 화 된 결과 에 ASCII 문자 만 포 함 될 지 여부 입 니 다.기본 값 은 True 입 니 다.Python 인 스 턴 스 를 서열 화 한 후 ASCII 코드 가 아 닌 모든 문자 가 전 의 됩 니 다.이 매개 변수의 값 을 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
이 매개 변 수 는 직렬 화 할 때 사전 의 키 를 알파벳 에 따라 정렬 할 지 여부 입 니 다.기본 값 은 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 io

stream = 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 rapidjson
from pprint import pprint

validate = 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        1

validate('["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))
파 이 썬 의 rapidjson 매개 변수 검증 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 rapidjson 매개 변수 검증 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기