如何修改JSON Schema让值为NO_DATA/EMPTY/NULL的JSON文件验证不通过
方案1:仅修改JSON Schema实现(推荐,无需调整业务代码)
直接在对应字段的校验规则中添加禁止枚举值的规则即可,无需修改现有VB代码,规则统一维护在Schema文件中更易管理:
"MN": { "type": "string", "pattern": "[A-Z0-9]{14}", // 若你不需要14位大写字母数字的正则校验,可直接删除这行 "not": { "enum": ["NO_DATA", "EMPTY", "NULL"] } }
上述配置会自动将三个空类标记值判定为校验不通过,完全符合你的需求。
方案2:修改VB.NET代码实现
如果你不想调整现有Schema文件,可以在原有校验逻辑后新增一层值检查,命中空类标记时手动将校验状态改为false:
schemaConn = ConfigurationManager.ConnectionStrings("LOCAL_SPLUNK_SCHEMA_PATH") schema_path = schemaConn.ToString Schema_String = My.Computer.FileSystem.ReadAllText(schema_path) extra_str = backup_path Schema = JsonSchema.Parse(Schema_String) step_str = "Validate JSON File Data Using Schema" Data_String = My.Computer.FileSystem.ReadAllText(Splunk_Info.FullName) Data_JSON = JObject.Parse(Data_String) Splunk_Status = Data_JSON.IsValid(Schema) ' 新增:空类标记值额外检查 If Splunk_Status Then Dim invalidValues As New List(Of String) From {"NO_DATA", "EMPTY", "NULL"} For Each prop In Data_JSON.Properties() If prop.Value.Type = JTokenType.String AndAlso invalidValues.Contains(prop.Value.ToString()) Then Splunk_Status = False Exit For End If Next End If System.Threading.Thread.Sleep(1000) Console.WriteLine("SPLUNK VALIDATE: " + Splunk_Status.ToString) If Splunk_Status = True Then File_Validation = True Console.WriteLine("File Location = " + Splunk_Info.FullName) GoTo Jump_ValidateHeader Else File_Validation = False GoTo Jump_ValidateHeader End If
内容的提问来源于stack exchange,提问作者CheemsBurbger
相关产品推荐
相关产品推荐

