36 lines
946 B
Python
36 lines
946 B
Python
import warnings
|
|
warnings.filterwarnings( "ignore", message = "The sre module is deprecated, please import re." )
|
|
from simplejson import JSONEncoder
|
|
from datetime import datetime, date
|
|
|
|
|
|
class Json( JSONEncoder ):
|
|
def __init__( self, *args, **kwargs ):
|
|
JSONEncoder.__init__( self )
|
|
|
|
if args and kwargs:
|
|
raise ValueError( "Please provide either args or kwargs, not both." )
|
|
|
|
self.__args = args
|
|
self.__kwargs = kwargs
|
|
|
|
def __str__( self ):
|
|
if self.__args:
|
|
if len( self.__args ) == 1:
|
|
return self.encode( self.__args[ 0 ] )
|
|
return self.encode( self.__args )
|
|
|
|
return self.encode( self.__kwargs )
|
|
|
|
def default( self, obj ):
|
|
"""
|
|
Invoked by JSONEncoder.encode() for types that it doesn't know how to encode.
|
|
"""
|
|
if isinstance( obj, datetime ) or isinstance( obj, date ):
|
|
return unicode( obj )
|
|
|
|
if hasattr( obj, "to_dict" ):
|
|
return obj.to_dict()
|
|
|
|
raise TypeError
|