def _json_convert(obj):
    if hasattr(obj, 'iteritems') or hasattr(obj, 'items'):  # PY3 support
        return SON(((k, _json_convert(v)) for k, v in iteritems(obj)))
    elif hasattr(obj, '__iter__') and not isinstance(obj, (text_type, bytes)):
        return list((_json_convert(v) for v in obj))
    try:
        return default(obj)
    except TypeError:
        return obj
Recursive helper method that converts BSON types so they can be
dataset/ETHPy150Open mongodb/mongo-python-driver/bson/json_util.py/_json_convert