Код: Выделить всё
not_a_number = float("NaN") # this actually comes from somewhere else
json.encode([not_a_number])
Код: Выделить всё
class NanEncoder(json.JSONEncoder):
def encode(self, obj):
if isinstance(obj, float):
if math.isnan(obj):
return None
return super(NanEncoder, self).encode(obj)
< /code>
Это работает: < /p>
>>> json.dumps(not_a_number, cls=NanEncoder)
>>> json_string = json.dumps(not_a_number, cls=NanEncoder)
>>> print(json_string)
None
< /code>
круто, я думаю, у меня есть. Но это не работает: < /p>
not_a_number_list = [not_a_number]
print(not_a_number_list)
[nan]
json_string = json.dumps(not_a_number_list, cls=NanEncoder)
print(json_string)
[NaN]
< /code>
Итак, как я вижу в документах Python, может быть, мне нужно вызвать метод Encode немного по -другому, поэтому я попробую: < /p>
json_string = NanEncoder().encode(not_a_number_list)
print(json_string)
[NaN]
Подробнее здесь: https://stackoverflow.com/questions/779 ... an-to-none