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