【问题标题】:Why is NaN not a json-schema primitive type? [closed]为什么 NaN 不是 json-schema 原始类型? [关闭]
【发布时间】:2014-12-18 13:20:04
【问题描述】:

在我的json-schema 中,我将一个属性定义为

"units":"number"

现在,使用 JJV 验证器(一个 json 模式实现),我在我的数据模型中遇到了一个值为 NaN 的值。我想做这样的"units":["number","NaN"],而不是像这样自定义强制函数:

    env.addTypeCoercion('number', function(x){
                if( isNaN(x))
                {
                    return 0
                }
                return x;
            });

版本 4 中的 JSON schema primitive types 似乎不包含 NaN。我如何设计一个架构,让我可以将属性表示为数字或 NaN?

【问题讨论】:

  • 是的,我猜它解析为一个数字。这似乎有足够的理由。
  • 编辑后,我看不出有理由认为这个问题主要是基于意见的。

标签: javascript validation types primitive jsonschema


【解决方案1】:

The definition of JSON 不允许使用 NaN 值。因此,任何允许 NaN 的 JSON 结构模式都将允许 不是 JSON 的东西。

如果您使用包含 NaN 值的 JSON.stringify 创建 JSON,它将被替换为 null

【讨论】:

  • 啊,看看 JJV 的实现,看起来他们明确打算不包括 NaN。 'number': function (x) { // Use x === x instead of !isNaN(x) for speed return typeof (x === 'number' && x === x) }, 所以我添加了|| typeof isNaN(x);
猜你喜欢
  • 2013-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-20
  • 1970-01-01
  • 2023-01-31
  • 2021-07-06
相关资源
最近更新 更多