MarkLogic 中数字类型的 JSON 模式验证

问题描述 投票:0回答:1

我正在使用 xdmp:json-validate-node 函数来验证 json 文档,然后再将其插入 MarkLogic。但当数字类型字段具有 NaN 值时,json 模式验证似乎不会引发错误。我在 json 文档上定义了 TDE,它拒绝我的文档,因为在 TDE 中我已将标量类型定义为十进制。

有什么方法可以验证数字类型的 NaN 值的 json 模式吗?

我在 MarkLogic qconsole 中尝试了以下查询。我期待验证错误,但它返回输入 json

xquery version "1.0-ml";

let $node := object-node {
  "name": "test",
  "age": fn:number("fail")
  
}
let $schema := object-node {
  "properties": object-node {
    "name": object-node {  
      "type": "string"
    }, 
    "age": object-node{
        "type": "number"
    }
  }
}
return xdmp:json-validate-node($node, $schema, "full")
marklogic jsonschema json-schema-validator marklogic-optic-api marklogic-11
1个回答
0
投票

NaN
是一个数字,但实际上在 JSON 中是不允许的。

关于它是否应该有效,以及是否有一个选项来配置 json-schema 的行为,存在一些争论。

MarkLogic 中的当前实现会将

NaN

 视为数字并被视为有效,并且我不相信有一种方法可以使用选项配置行为。因此,如果您想将其标记为无效,则需要使用自定义的内容来增强验证。

我建议打开

MarkLogic 支持票证,请求增强 JSON 验证实现和/或在 MarkLogic Ideas 门户上提交功能请求。

© www.soinside.com 2019 - 2024. All rights reserved.