如何使用JSON Schema验证YAML文件中的重复列表项?
能否用JSON Schema验证YAML中的重复列表项?
标准JSON Schema本身无法直接验证列表对象中某个字段的唯一性。
原因在于,JSON Schema的设计基于JSON数据模型,JSON数组允许存在重复元素,内置的uniqueItems关键字仅能校验整个数组元素是否完全一致,无法针对元素内部的特定字段(比如你示例里的key1)做唯一性检查。即便YAML被解析成JSON结构后,也没办法通过标准JSON Schema规则检测key1的重复问题。
可行的替代方案
- 使用支持扩展的JSON Schema工具:部分工具(如Ajv)允许添加自定义关键字或自定义校验逻辑。比如可以定义一个自定义关键字,遍历数组元素并检查指定字段的唯一性。
- 解析后自行编写校验逻辑:在YAML解析完成后,通过代码手动检查目标字段的重复情况。以下是Python环境下的示例代码:
import yaml def check_unique_key1(file_path): with open(file_path, 'r') as f: data = yaml.safe_load(f) key1_values = [item['key1'] for item in data.get('config', [])] if len(key1_values) != len(set(key1_values)): raise ValueError("config列表中存在重复的key1值") # 调用示例 check_unique_key1('config.yaml')
内容的提问来源于stack exchange,提问作者Alan M
相关产品推荐
相关产品推荐

