Is there a python decoder that produces VALID json and handles NaNs Is there a python decoder that produces VALID json and handles NaNs json json

Is there a python decoder that produces VALID json and handles NaNs


you can always make your own encoder (I stole this one from https://gist.github.com/pauloalem/6244976 )

import jsonclass FloatEncoder(json.JSONEncoder):    def __init__(self, nan_str="null", **kwargs):        super(FloatEncoder, self).__init__(**kwargs)        self.nan_str = nan_str    def iterencode(self, o, _one_shot=False):        """Encode the given object and yield each string        representation as available.        For example::            for chunk in JSONEncoder().iterencode(bigobject):                mysocket.write(chunk)        """        if self.check_circular:            markers = {}        else:            markers = None        if self.ensure_ascii:            _encoder = json.encoder.encode_basestring_ascii        else:            _encoder = json.encoder.encode_basestring        # if self.encoding != 'utf-8':        #     def _encoder(o, _orig_encoder=_encoder, _encoding=self.encoding):        #         if isinstance(o, str):        #             o = o.decode(_encoding)        #         return _orig_encoder(o)        def floatstr(o, allow_nan=self.allow_nan, _repr=json.encoder.encode_basestring,                _inf=json.encoder.INFINITY, _neginf=-json.encoder.INFINITY,                nan_str=self.nan_str):            # Check for specials.  Note that this type of test is processor            # and/or platform-specific, so do tests which don't depend on the            # internals.            if o != o:                text = nan_str            elif o == _inf:                text = 'Infinity'            elif o == _neginf:                text = '-Infinity'            else:                return _repr(o)            if not allow_nan:                raise ValueError(                    "Out of range float values are not JSON compliant: " +                    repr(o))            return text        _iterencode = json.encoder._make_iterencode(                markers, self.default, _encoder, self.indent, floatstr,                self.key_separator, self.item_separator, self.sort_keys,                self.skipkeys, _one_shot)        return _iterencode(o, 0)d = {"i_will_byte_you_in_the_ass": float("NaN")}print( json.dumps(d, cls=FloatEncoder) )