0

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

架构:

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

正在验证的 JSON 实例:

{
    "lower_bound": Infinity
}
4

1 回答 1

4

JSON 既不支持无穷大也不支持 NaN 值(而且从不支持,因为原始的 json.org 语法)。JSON Schema 也没有(因为它只为符合 RFC8259 的 JSON 文档或结构定义)。

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

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

于 2020-05-16T21:52:12.940 回答