File: JSON.md

package info (click to toggle)
flask-openapi3 4.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,976 kB
  • sloc: python: 4,754; sh: 17; makefile: 15; javascript: 5
file content (52 lines) | stat: -rw-r--r-- 1,184 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
## Use `orjson`

```python hl_lines="17"
import orjson
from flask.json.provider import JSONProvider


class OrJSONProvider(JSONProvider):
    # https://github.com/ijl/orjson#option
    option = orjson.OPT_INDENT_2

    def dumps(self, obj, **kwargs):
        return orjson.dumps(obj, option=self.option).decode()

    def loads(self, s, **kwargs):
        return orjson.loads(s)
    
app = OpenAPI(__name__, info=info)
# use orjson
orjson_provider = OrJSONProvider(app)
app.json = orjson_provider
```

## Use `ujson`

```python hl_lines="24"
import ujson
from flask.json.provider import JSONProvider

class UJSONProvider(JSONProvider):
    # https://github.com/ultrajson/ultrajson
    encode_html_chars = False
    ensure_ascii = False
    indent = 4

    def dumps(self, obj, **kwargs):
        option = {
            "encode_html_chars": self.encode_html_chars,
            "ensure_ascii": self.ensure_ascii,
            "indent": self.indent
        }
        return ujson.dumps(obj, **option)

    def loads(self, s, **kwargs):
        return ujson.loads(s)
    
    
app = OpenAPI(__name__, info=info)
# use ujson
ujson_provider = UJSONProvider(app)
app.json = ujson_provider
```