Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据具有未知属性的模式验证JSON_C#_Json_Jsonschema - Fatal编程技术网

C# 根据具有未知属性的模式验证JSON

C# 根据具有未知属性的模式验证JSON,c#,json,jsonschema,C#,Json,Jsonschema,从2013年开始,JSON验证器(根据模式验证)应该/可以允许ban unknown properties参数只允许模式中存在的属性,即使模式不包含additionalProperties false。然而,就我所能看到的而言,所有通往这片土地的道路似乎都变得冷清了 是否有任何验证器可以在C#中使用,即使没有additionalProperties false指令,也会使额外属性失败 我没有模式的控制权,它不包含额外的属性,我无法添加它 您可以编写自己的模式,即“在此处使用此模式”,然后向其添加

从2013年开始,JSON验证器(根据模式验证)应该/可以允许ban unknown properties参数只允许模式中存在的属性,即使模式不包含
additionalProperties false
。然而,就我所能看到的而言,所有通往这片土地的道路似乎都变得冷清了

是否有任何验证器可以在C#中使用,即使没有
additionalProperties false
指令,也会使额外属性失败

我没有模式的控制权,它不包含额外的属性,我无法添加它

您可以编写自己的模式,即“在此处使用此模式”,然后向其添加其他关键字。请注意,这需要支持2019-09规范草案的实施:

{
  "$schema": "https://json-schema.org/draft/2019-09/schema",
  "$ref": "... uri to the schema you wish to modify",
  "unevaluatedProperties": false
}

“unevaluatedProperties”是本草稿中的一个新关键字,它考虑了在同一数据位置评估的其他模式——前面没有提到的带有“properties”、“additionalProperties”、“patternProperties”或“unevaluatedProperties”关键字的任何属性都将被此“unevaluatedProperties”关键字考虑。由于其值为
false
,因此不允许任何此类匹配属性。

这是否回答了您的问题?抱歉,我无法理解,您是在问:“禁止未知属性的
到哪里去了?”还是您有使用
additionalProperties false
失败的特定情况?@DragandDrop我无法控制架构,它不包含
additionalProperties
,我无法添加它。但是,如果JSON中存在模式中不存在的属性,我仍然希望验证失败。这应该是个问题。因为现在还不清楚为什么你想要2013年的东西,而其他替代品在线程中存在。使用3行json和5行模式,您甚至可以一直访问。如果您仅限于一组特定的lib,那么这也是一个不错的添加。谢谢,这听起来很有希望。