Custom json serializers for the Starlette web framework.
Project description
Starlette Json
Introduction
Starlette json responses for various json serializers available in the python community.
Why:
- Remove
ujson
dependency from core starlette package - Add adaptation for other serializers
- Customize serializer rendering settings
Requirements
- Python 3.6+
- Starlette
Installation
$ pip install starlette-json
Optional installs
Install at least one of these:
Usage
Basic
from starlette.applications import Starlette
from starlette.responses import JSONResponse
from starlette_json import ORJsonResponse, UJsonResponse, RapidJsonResponse
app = Starlette()
data = {'Hello': 'World'}
@app.route('/json')
def json():
return JSONResponse(data)
@app.route('/orjson')
def orjson():
return ORJsonResponse(data)
@app.route('/ujson')
def ujson():
return UJsonResponse(data)
@app.route('/rapidjson')
def rapidjson():
return RapidJsonResponse(data)
Custom rendering options:
See the docs for the specific json serializer for available options
from starlette.applications import Starlette
from starlette_json import ORJsonResponse, UJsonResponse, RapidJsonResponse
import orjson
app = Starlette()
data = {'Hello': 'World'}
@app.route('/orjson')
def orjson():
return ORJsonResponse(
data,
default=lambda x: str(x),
option=orjson.OPT_STRICT_INTEGER | orjson.OPT_NAIVE_UTC
)
@app.route('/ujson')
def ujson():
return UJsonResponse(
data,
encode_html_chars=True,
ensure_ascii=False,
escape_forward_slashes=False
)
@app.route('/rapidjson')
def rapidjson():
return RapidJsonResponse(data, sort_keys=True, indent=4)
Contributing
PRs very welcome. CONTRIBUTING.md
Todo
- Tests?
- Figure out how to integrate custom json parser for
starlette.request
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for starlette_json-19.10.24-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b5c60ee7cb83d69cc23b7c3fdcab8e7a825a95af32e664f9c54895dfaa430e23 |
|
MD5 | 2a1e3deb7775c0910c829af00163dfbe |
|
BLAKE2b-256 | e34860944179900b23a2f4806ce0a419a5ea044815f27c9a994674576d5ee58e |