from json import dumps, loads, JSONEncoder, JSONDecoder

from app.entity.systemconfig.SystemEnumeration import *
from app.entity.systemconfig.SystemTemplate import *
from app.entity.calculator.CalculatorDataBean import *
from app.resource.PagerInfo import PagerInfo
from app.resource.ResultWrapper import ResultWrapper
from app.entity.product.Options import *
from app.entity.product.Stock import *

class CustomerJSONEncoder(JSONEncoder):
    def default(self, obj):
        if isinstance(obj, set):
            return list(obj)
        
        if isinstance(obj, ResultWrapper):
            return obj.serialize()
        if isinstance(obj, PagerInfo):
            return obj.serialize()
        
        if isinstance(obj, SystemEnumeration):
            return obj.serialize()
        if isinstance(obj, SystemTemplate):
            return obj.serialize()
        
        
        if isinstance(obj, Options):
            return obj.serialize()
        if isinstance(obj, Stock):
            return obj.serialize()
        if isinstance(obj, CalculatorDataBean):
            return obj.serialize()
        
        return JSONEncoder.default(self, obj)