JSON模式中的十进制精度

时间:2014-12-02 22:54:44

标签: json rest jsonschema

我想让我的JSON Schema验证不会向我的REST api发送不超过两个小数位。

从我在最新的JSON Schema RFC(v4)中看到的内容不允许这样做。 V1有一个maxDecimals验证器。

有谁知道为什么会被取出?

我有一个字段,当我将它存储在数据库中时只保留两位小数,我不只想舍入到两位小数。对于一些用户来说,这将极大地改变输入。所以我想拒绝任何更高的精确度,并强迫他们围绕自己。

我当然可以使用我自己编写的自定义验证器来做到这一点,但除非我绝对必须这样做,否则我宁愿不这样做。

还有另一种方法可以在v4中表明这一点吗?

由于

4 个答案:

答案 0 :(得分:13)

他们用multipleOf替换它(通过v3 divisibleBy)。

对于2位小数,只需添加multipleOf:0.01。

答案 1 :(得分:4)

我建议{ "type": "number", "multipleOf": 0.01 } rather than { "type": "integer", "multipleOf": 0.01 }

请参阅http://spacetelescope.github.io/understanding-json-schema/reference/numeric.html#multiples

答案 2 :(得分:2)

如果您使用的是python jsonschema库,则您需要

{ "type": "number", "multipleOfPrecision": 0.01 }

https://github.com/epoberezkin/ajv#options

答案 3 :(得分:2)

基于JSON Schema specification rfc.section.6.3

{ 
  "type": "string", 
  "pattern": "-?^\\d*(.\\d{0,2})?$" 
}