如何检查m子中的无效json输入?

时间:2019-08-23 11:21:37

标签: json mule anypoint-studio

如何检查输入的JSON格式正确或是否在m子中 我输入的JSON是

{
    "received": "3538410873",
    "RmaNumber": "93321"2",
    "TrackingNumber": "324823478",
    "DeviceMake": "samsung",
    "DeviceModel": "j7 prime",
    "DeviceColor": "black"
}

我尝试过使用is-json-filter,但无法正常工作

<message-filter onUnaccepted="noJsonFlow" throwOnUnaccepted="false">
    <json:is-json-filter />
</message-filter>

对于无效的JSON输入,我需要显示无效的JSON格式

1 个答案:

答案 0 :(得分:0)

您可以使用几种替代方法,每一种都有一些小缺点。

您可以将与空模式定义一起使用(即,仅包含{}的文件)。它将在我的测试中检测到错误,并且不会拒绝有效的JSON。对我来说似乎有点骇人听闻。

另一种选择是将DataWeave转换程序用于相同的有效负载。它将在转换之前进行验证。缺点是它将转换为等效项,这是多余的,并且性能较低,因为它可以完成双重工作,但格式也可能与原始格式有所不同。这可能对您来说不是问题。您可以通过将结果分配给flowVar来避免这种情况。 示例:

        <dw:transform-message doc:name="Transform Message">
            <dw:input-payload mimeType="application/json"/> <!-- only needed if the mimetype is not set for the payload -->
            <dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
payload]]></dw:set-payload>
        </dw:transform-message>

第三个选择是创建自己的custom validator并使用Java库根据需要验证JSON。我看到的唯一缺点是,由于它不是OOTB,因此需要做更多的工作。

相关问题