处理 JSON 中的无穷大值

handling infinity values in JSON

我需要在一处支持我的 JSON 中的无穷大、-infinity 和 NaN 值。现在虽然 JSON 确实支持这些值,但是是否支持在同一 JSON 实例的架构中指定它们,我的意思是 RFC 规范说这些值是“数字”类型不支持。但是,当我针对类型为“number”的模式验证一个具有无穷大值的 JSON 实例时,它没有产生任何错误!有人可以帮我弄清楚为什么会这样吗,如果“数字”类型丢弃这些值,我如何在 JSON 模式中定义这些值的类型。这是我用来验证的架构和实例。

架构:

{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
        "properties": {
        "lower_bound": {"type": "number"}
        }
}

JSON 正在验证的实例:

{
    "lower_bound": Infinity
}

JSON 既不支持无穷大也不支持 NaN 值(并且从不支持,因为最初的 json.org 语法)。 JSON Schema 也没有(因为它仅针对符合 RFC8259 的 JSON 文档或结构定义)。

这是出于互操作性的原因 - 否则每个不支持无穷大或 NaN 的目标语言都需要始终包装这些值。

某些验证器是否接受无效的 json 文档 - 并不重要。它们仍然无效。