Serialize None as valid JSON

This commit is contained in:
Grey Panther 2016-10-13 14:12:52 +03:00
parent 88c6c380c5
commit 1ce894d347
3 changed files with 12 additions and 4 deletions

View File

@ -51,6 +51,9 @@ class BaseRenderer(object):
raise NotImplementedError('Renderer class requires .render() to be implemented')
_NULL_JSON = bytes('null'.encode('ascii'))
class JSONRenderer(BaseRenderer):
"""
Renderer which serializes to JSON.
@ -87,7 +90,7 @@ class JSONRenderer(BaseRenderer):
Render `data` into JSON, returning a bytestring.
"""
if data is None:
return bytes()
return _NULL_JSON
renderer_context = renderer_context or {}
indent = self.get_indent(accepted_media_type, renderer_context)

View File

@ -77,10 +77,11 @@ class Response(SimpleTemplateResponse):
)
return bytes(ret.encode(charset))
if not ret:
if self.status_code == 204:
del self['Content-Type']
return ret
return bytes()
else:
return ret
@property
def status_text(self):

View File

@ -360,6 +360,10 @@ class JSONRendererTests(TestCase):
content = renderer.render(obj, 'application/json; indent=2')
self.assertEqual(strip_trailing_whitespace(content.decode('utf-8')), _indented_repr)
def test_none(self):
ret = JSONRenderer().render(None)
self.assertEqual(None, json.loads(ret))
class UnicodeJSONRendererTests(TestCase):
"""