首页app攻略如何使用json文件 如何使用json

如何使用json文件 如何使用json

圆圆2025-09-09 20:02:01次浏览条评论

使用 json schema 的 oneof 校验时避免不必要的枚举错误

本文旨在帮助开发者理解和解决在使用 JSON Schema 的 oneOf 关键字进行校验时,可能出现的“值未在枚举中定义”的错误。通过分析错误产生的原因,避免提供此类错误的策略,并强调正确理解 oneOf 行为的重要性,从而提升 JSON Schema 校验的准确性和效率。理解 oneOf 的行为关键字用于指定 JSON数据必须匹配多个子模式中的一个且仅一个。当 JSON 数据无法满足其中任何一个子模式时,校验器会报告所有子模式的错误信息,这可能导致一些“想象”的错误出现。

例如,考虑以下 JSON Schema:{ quot;$schemaquot;: quot;https://json-schema.org/draft/2019-09/schemaquot;, quot;typequot;: quot;objectquot;, quot;propertiesquot;: { quot;eventNamequot;: { quot;typequot;: quot;stringquot;, quot;enumquot;: [quot;Test10quot;, quot;Test12quot;, quot;Test1quot;, quot;Test2quot;, quot;Test3quot;] }, quot;eventPayloadquot;: { quot;typequot;: quot;objectquot;, quot;propertiesquot;: { quot;totalAmountquot;: { quot;typequot;: quot;numberquot } } } }, quot;oneOfquot;: [ { quot;propertiesquot;: { quot;eventNamequot;: { quot;enumquot;: [quot;Test10quot;, quot;Test12quot;] }, quot;eventPayloadquot;: { quot;propertiesquot;: { quot;totalAmountquot;: { quot;exclusiveMinimumquot;: 0 } } } } }, { quot;propertiesquot;: { quot;eventNamequot;: { quot;enumquot;: [quot;Test1quot;, quot;Test2quot;, quot;Test3quot;] }, quot;eventPayloadquot;: { quot;propertiesquot;: { quot;totalAmountquot;: { quot;exclusiveMaximumquot;: 0 } } } } } ]}登录后复制

以及以下 JSON 数据:{ quot;eventNamequot;: ”;测试12”;, quot;eventPayloadquot;: { quot;totalAmountquot;:-5 }}登录后复制

使用上述schema校验JSON数据时,会得到如下错误

结果:消息: Value quot;Test12quot; is not Define in enum.Schema 路径: #/oneOf/1/properties/eventName/enumMessage: Integer -5 is less than min value of 0.Schema path: #/oneOf/0/properties/eventPayload/properties/totalAmount/minimum 登录后复制

第一个错误 "Value "Test12" is not Defined in enum." 是由于第二个子 schema 中 eventName 的 enum 仅包含 "Test1", "Test2", "Test3",而 JSON 数据中的 eventName 为 "Test12"。 第二个错误 "Integer -5 is less than min value of 0." 是由于第一个子模式中的totalAmount的exclusiveMinimum为0,而JSON数据中的totalAmount为-5。Fotor AI Image Upscaler

Fotor推出的AI放大工具48查看详情如何避免不一定的枚举错误

虽然错误信息可能看起来是“视觉”的,但它们实际上准确地反映了每个子模式的校验结果图片。关键理解了oneOf的工作方式:它会尝试用每个子 schema 校验 JSON 数据,并报告所有失败的子 schema 的错误。

要避免这种“偏差”错误,因为需要更仔细地设计 oneOf 中的子 schema,确保它们之间的交互性更强。未来,尽量让每个子 schema 针对不同的数据结构或类型进行校验,避免出现重叠或模糊的情况。

在这个例子中,错误是无法完全的,避免 oneOf的设计目的是校验数据是否满足一个且仅一个子模式。校验器报告会每个不满足的子模式的原因。

总结:理解其中一个的行为: oneOf 会尝试匹配所有子模式,并报告所有不匹配的错误。明确规定子模式:确保 oneOf 中的每个子模式具有明确且互斥的校验目标。仔细分析错误信息:不要轻易忽略错误信息,仔细分析每个错误的原因,判断是否需要调整模式数据或数据。

提高通过理解oneOf的工作原理,并采取相应的策略,可以有效地利用JSON Schema进行数据校验、数据质量和应用程序的可靠性。

以上就是利用JSON Schema的oneOf校验时避免不必要的枚举错误的详细内容,更多请关注乐哥常识网其他相关文章!

使用 JSON Sc
52书库全文免费阅读在线地址 52书库官网免费版入口 “52书库”
相关内容
发表评论

游客 回复需填写必要信息