You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:09:01