Mule中的JSON模式验证:获取失败字段

时间:2016-07-29 16:02:30

标签: json validation mule raml apikit

我在Mule中使用带有 RAML 0.8 的APIkit和JSON模式,如下所示(示例):

{
    "$schema": "http://json-schema.org/draft-04/schema#",

    "type": "object",

    "properties": {
        "cart": {
            "title": "",
            "description": "",
            "type": "object",
            "properties": {
                "internalNumber": {
                    "type": "integer"
                }
            },
            "required": [
                "internalNumber"
            ]
        }
    },
    "required": [
        "cart"
    ]
}

在Mule Flow中,我捕获异常并显示以下结果:

#[exception.cause.message]

当发生验证错误时,我想获取验证失败的字段名称。相反,这就是我得到的:

输入

{
    "cart": {
        "internalNumber": "I must be an integer"
    }
}

输出

"instance type (string) does not match any allowed primitive type (allowed: ["integer"])"

预期输出

{
    "field": "cart.internalNumber",
    "error": "instance type (string) does not match any allowed primitive type (allowed: ["integer"])"
}

我想知道的是,如果有一种方法可以获得验证错误发生的字段名称。

关于Mule Documentation,我可以得到整个json字符串但不是失败字段的名称...

我希望有人能给我一个更好的解决方案。

谢谢!

2 个答案:

答案 0 :(得分:0)

在您的JSON架构中,添加" required":" true"属性,使字段成为必填字段。

您还可以通过引用更新的架构,在您的mule流中使用JSON模式验证器。

任何一种情况都应该通过你遗漏错误字段。 使用下面的表达式来获取预期的错误消息       { "errorMessage": "#[exception].toString().replace("\"","\\\"")" }

答案 1 :(得分:-3)

不确定您是希望将其作为输出还是寻找验证输入和架构的方法。 我可以尝试建议“我想知道的是,是否有办法获得验证错误发生的字段名称。”;在定义定义之前,通过在线验证器更好地验证您的JSON和输入数据。与使用http://www.jsonschemavalidator.net/一样,它可以帮助您处理错误和字段。希望这可能有所帮助!