将“Inf和NaN”转换为可接受的值,例如字符串或特定的数值。以下是一个Python代码示例:
import json
from math import isnan, isinf
# Define a custom JSON encoder that handles NaN and Inf values
class CustomEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, float):
if isinf(obj):
if obj < 0:
return '-Infinity'
else:
return 'Infinity'
elif isnan(obj):
return 'NaN'
return super().default(obj)
# Create an example dictionary with NaN and Inf values
data = {'foo': float('inf'), 'bar': float('-inf'), 'baz': float('nan')}
# Encode the dictionary using the custom encoder
encoded_data = json.dumps(data, cls=CustomEncoder)
print(encoded_data)
# Output: {"foo": "Infinity", "bar": "-Infinity", "baz": "NaN"}
在这个例子中,我们定义了一个自定义的JSON编码器,它检测浮点值是否是无穷大或NaN,并在JSON编码时将其转换为字符串。我们还提供了一个带有NaN和Inf值的示例字典,并使用该自定义编码器将其编码为JSON字符串。最终输出的JSON字符串中包含了字符串类型的“Infinity”和“-Infinity”表示正负无穷大,以及“NaN”表示非数值。