gpt4 book ai didi

c# - 在自定义 JsonValidator 中访问字段父级

转载 作者:太空宇宙 更新时间:2023-11-03 12:46:37 24 4
gpt4 key购买 nike

我正在使用 Newtonsoft 出色的 JsonSchema 库并尝试为 greaterthanfield 另一个字段验证构建自定义验证器。

为了做到这一点,我显然需要从 Validate(JToken value, JsonValidatorContext context) 方法访问其他字段。但是,JToken 中没有任何父信息,无法找到所需的兄弟。同样,JsonValidatorContext 仅在架构中没有对验证数据的任何引用。

我希望能够:value.Parent["siblingkey"] 但看起来 JToken 实际上只是那个无法访问其余解析数据的 token 。

有谁知道实现这种验证器的方法吗?一个引用其他字段的。其他示例类似于 combinedmaxlength 等...

最佳答案

我一直在玩,因为我遇到了同样的问题。
我发现自定义验证器系统有一些奇怪的行为,其中 JToken 树正在根据最高父节点您的验证器可以验证(其中 CanValidate 返回 true)

这意味着如果我们可以欺骗系统相信您的验证器可以验证根 token 您的特定 token ,您的树将被水化。

public class TestValidator : JsonValidator
{

public override bool CanValidate(JSchema schema)
{
// we assume every schema has a title/schemaversion in its root object.
return schema.Title != null || schema.SchemaVersion != null || schema.ExtensionData.ContainsKey("greaterthanfield");
}

public override void Validate(JToken value, JsonValidatorContext context)
{
// we should ignore the "root token validation"
if (!context.Schema.ExtensionData.ContainsKey("greaterthanfield"))
return;
// value.Parent is hydrated now
}
}

关于c# - 在自定义 JsonValidator 中访问字段父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37075394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com