Skip to content

Commit 7518a48

Browse files
Support Decimal in FriendlyEncoder (#12)
Co-authored-by: Roberto Prevato <[email protected]>
1 parent c2d8d26 commit 7518a48

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

essentials/json.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from enum import Enum
1111
from typing import Any
1212
from uuid import UUID
13+
from decimal import Decimal
1314

1415
__all__ = ["FriendlyEncoder", "dumps"]
1516

@@ -33,6 +34,8 @@ def default(self, obj: Any) -> Any:
3334
return base64.urlsafe_b64encode(obj).decode("utf8")
3435
if isinstance(obj, UUID):
3536
return str(obj)
37+
if isinstance(obj, Decimal):
38+
return str(obj)
3639
if isinstance(obj, Enum):
3740
return obj.value
3841
if dataclasses.is_dataclass(obj):
@@ -51,7 +54,7 @@ def dumps(
5154
separators=None,
5255
default=None,
5356
sort_keys=False,
54-
**kw
57+
**kw,
5558
) -> str:
5659
if cls is None:
5760
cls = FriendlyEncoder
@@ -66,5 +69,5 @@ def dumps(
6669
separators=separators,
6770
default=default,
6871
sort_keys=sort_keys,
69-
**kw
72+
**kw,
7073
)

tests/test_json.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from dataclasses import dataclass
22
from datetime import date, datetime, time
3+
from decimal import Decimal
34
from enum import Enum, Flag, IntEnum, IntFlag, auto
45
from uuid import UUID, uuid4
56

@@ -53,6 +54,7 @@ class Permission(IntFlag):
5354
({"value": time(10, 30, 15)}, '{"value": "10:30:15"}'),
5455
({"value": date(2016, 3, 26)}, '{"value": "2016-03-26"}'),
5556
({"value": datetime(2016, 3, 26, 3, 0, 0)}, '{"value": "2016-03-26T03:00:00"}'),
57+
({"value": Decimal("10.5")}, '{"value": "10.5"}'),
5658
(
5759
{"value": UUID("e56fddfc-f85b-4178-869f-a218278a639e")},
5860
'{"value": "e56fddfc-f85b-4178-869f-a218278a639e"}',

0 commit comments

Comments
 (0)