处理 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 文档 - 并不重要。它们仍然无效。
我需要在一处支持我的 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 文档 - 并不重要。它们仍然无效。