def test_adapt(self): from jsonpublish.encoder import JSONEncoder encoder = JSONEncoder() from datetime import date o = date(1987, 5, 8) self.assertRaises(TypeError, encoder.encode, o) encoder.adapters.register_adapter(date, lambda d: d.strftime("%Y-%m-%d")) self.assertEqual(encoder.encode(o), '"1987-05-08"')
def test_adapt(self): from jsonpublish.encoder import JSONEncoder encoder = JSONEncoder() from datetime import date o = date(1987, 5, 8) self.assertRaises( TypeError, encoder.encode, o) encoder.adapters.register_adapter( date, lambda d: d.strftime("%Y-%m-%d")) self.assertEqual( encoder.encode(o), '"1987-05-08"')
def test_serialize_on_adaptable(self): from jsonpublish.encoder import JSONEncoder encoder = JSONEncoder() from zope.proxy import ProxyBase from datetime import date o = date(1987, 5, 8) p = ProxyBase(o) def adapt_date(d): return d.strftime("%Y-%m-%d") encoder.adapters.register_adapter(date, adapt_date) self.assertEqual( encoder.encode(p), '"1987-05-08"')
def test_serialize_on_adaptable(self): from jsonpublish.encoder import JSONEncoder encoder = JSONEncoder() from zope.proxy import ProxyBase from datetime import date o = date(1987, 5, 8) p = ProxyBase(o) def adapt_date(d): return d.strftime("%Y-%m-%d") encoder.adapters.register_adapter(date, adapt_date) self.assertEqual(encoder.encode(p), '"1987-05-08"')
def test_settings(self): from jsonpublish.encoder import JSONEncoder, jsonsettings encoder = JSONEncoder() from datetime import date o = date(1987, 5, 8) def adapt_date(d, with_year=True): if with_year: return d.strftime("%Y-%m-%d") else: return d.strftime("%m-%d") encoder.adapters.register_adapter(date, adapt_date) self.assertEqual(encoder.encode(o), '"1987-05-08"') self.assertEqual(encoder.encode(jsonsettings(o, with_year=False)), '"05-08"')
def dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, indent=None, separators=None, encoding='utf-8', default=None, use_decimal=True, namedtuple_as_object=True, tuple_as_array=True, **kw): """ Serialize `obj` using globally configured JSON encoder Accepted arguments are the same as :func:`json.dumps` accepts """ if (not skipkeys and ensure_ascii and check_circular and allow_nan and indent is None and separators is None and encoding == 'utf-8' and default is None and use_decimal and namedtuple_as_object and tuple_as_array and not kw): return _default_encoder.encode(obj) return JSONEncoder(skipkeys=skipkeys, ensure_ascii=ensure_ascii, check_circular=check_circular, allow_nan=allow_nan, indent=indent, separators=separators, encoding=encoding, default=default, use_decimal=use_decimal, namedtuple_as_object=namedtuple_as_object, tuple_as_array=tuple_as_array, adapters=_global_adapters, **kw).encode(obj)
def test_settings(self): from jsonpublish.encoder import JSONEncoder, jsonsettings encoder = JSONEncoder() from datetime import date o = date(1987, 5, 8) def adapt_date(d, with_year=True): if with_year: return d.strftime("%Y-%m-%d") else: return d.strftime("%m-%d") encoder.adapters.register_adapter(date, adapt_date) self.assertEqual( encoder.encode(o), '"1987-05-08"') self.assertEqual( encoder.encode(jsonsettings(o, with_year=False)), '"05-08"')
def test_serialize_proxy(self): from jsonpublish.encoder import JSONEncoder encoder = JSONEncoder() from zope.proxy import ProxyBase p = ProxyBase(1) self.assertEqual(encoder.encode(p), '1')
from jsonpublish.encoder import JSONEncoder, AdapterRegistry, jsonsettings __all__ = ("dumps", "register_adapter", "jsonsettings") _global_adapters = AdapterRegistry() _default_encoder = JSONEncoder( skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, indent=None, separators=None, encoding='utf-8', default=None, adapters=_global_adapters, ) #: Register adapter for global encoder which is used by :func:`.dumps` function register_adapter = _global_adapters.register_adapter def dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, indent=None, separators=None, encoding='utf-8', default=None, use_decimal=True,