1

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

{
    "$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 文档,我可以获得整个 JSON 字符串,但不能获得失败字段的名称......

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

谢谢!

4

2 回答 2

0

在您的 JSON Schema 中,添加“required”:“true”属性,使字段成为必填项。

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

任何情况都应该通过您的缺失字段出现错误。使用下面的表达式来获得预期的错误消息。 { "errorMessage": "#[exception].toString().replace("\"","\\\"")" }

于 2016-07-31T01:59:36.357 回答
-3

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

于 2016-07-30T06:14:17.277 回答