mirror of
https://github.com/simonw/sqlite-utils.git
synced 2026-07-23 01:14:31 +02:00
Serialize JSON with non-JSON values, closes #102
This commit is contained in:
parent
344e9573ca
commit
d56029549a
2 changed files with 10 additions and 2 deletions
|
|
@ -1317,7 +1317,7 @@ def chunks(sequence, size):
|
|||
|
||||
def jsonify_if_needed(value):
|
||||
if isinstance(value, (dict, list, tuple)):
|
||||
return json.dumps(value)
|
||||
return json.dumps(value, default=repr)
|
||||
elif isinstance(value, (datetime.time, datetime.date, datetime.datetime)):
|
||||
return value.isoformat()
|
||||
else:
|
||||
|
|
@ -1326,7 +1326,9 @@ def jsonify_if_needed(value):
|
|||
|
||||
def _hash(record):
|
||||
return hashlib.sha1(
|
||||
json.dumps(record, separators=(",", ":"), sort_keys=True).encode("utf8")
|
||||
json.dumps(record, separators=(",", ":"), sort_keys=True, default=repr).encode(
|
||||
"utf8"
|
||||
)
|
||||
).hexdigest()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -847,3 +847,9 @@ def test_create_with_a_null_column(fresh_db):
|
|||
record = {"name": "Name", "description": None}
|
||||
fresh_db["t"].insert(record)
|
||||
assert [record] == list(fresh_db["t"].rows)
|
||||
|
||||
|
||||
def test_create_with_nested_bytes(fresh_db):
|
||||
record = {"id": 1, "data": {"foo": b"bytes"}}
|
||||
fresh_db["t"].insert(record)
|
||||
assert [{"id": 1, "data": '{"foo": "b\'bytes\'"}'}] == list(fresh_db["t"].rows)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue