【问题标题】:how to check whether the JSON recieved is empty/ nulll in mule 4如何在mule 4中检查收到的JSON是否为空/ null
【发布时间】:2020-08-29 08:31:28
【问题描述】:

我正在尝试检查 json 对象是否为空/null,但出现以下错误:

org.mule.runtime.core.api.expression.ExpressionRuntimeException: "Unable to parse empty input, while reading `obj` as Json.

1|
   ^
Trace:
  at main (line: 1, column: 1)" evaluating expression: "isEmpty(vars.obj)".

另外,我观察到变量在 mule 调试器中看起来像这样:

obj= 

请提出解决方案。

【问题讨论】:

  • 可以分享代码吗?
  • 我从外部 api 收到了这个 json 对象
  • 请提供更多信息 - 哪个版本的 mule、示例有效负载等。您说您正在检查 JSON 对象是否为空或 null;您是指整个有效载荷还是特定密钥?还请提供有关您尝试如何设置变量的详细信息。
  • 在您的 API 调用后立即添加一个记录器并执行 output application/json --- payload 以查看您从 API 收到的数据类型。如果 JSON 不起作用,您可以尝试其他 mime 类型。
  • 没有一个建议的答案在 dw 2.0 中真正起作用。类型为 application/json 的有效负载实际上为 null,甚至 isEmpty(payload) 也因原始发布者的错误而失败。

标签: mule dataweave anypoint-studio mule4


【解决方案1】:

应按照此处所述正确检查所有输入 https://simpleflatservice.com/mule4/DoubleAndTripleCheckTheInput.html

null可以像

一样提前检查
vars.obj == null or isEmpty(vars.obj)

然而这不是必须的。 isEmpty 函数与空值完美配合。

%dw 2.0
output application/json
---
{
    reallyEmpty: isEmpty(''),
    nullOrReallyEmpty: isEmpty(null),
    unknownVaraiable: isEmpty(vars.xyz)
}

输出

{
  "reallyEmpty": true,
  "nullOrReallyEmpty": true,
  "unknownVaraiable": true
}

还要注意 WhiteSpaceString

【讨论】:

  • isEmpty(vars.obj) 没有返回 true
  • 那么不为空。记录下来看看。在我的示例中,第三行是不存在的变量。它正在返回真实。 Linux 中的 vars.obj 可能因文本/二进制文件、 等而有所不同。我的意思是 - 记录这个变量并仔细检查它是否符合您的期望。跨度>
  • 还要注意 WhiteSpaceString。我已经用图片更新了我的答案
【解决方案2】:

如果负载的 MIME 类型为 application/json,则空对象不是有效的 JSON,无法解析。有效负载需要为{}。请参阅Mule doc。如果 MIME 类型是 application/json,客户端发送{} 的解决方案。

【讨论】:

    猜你喜欢
    • 2020-09-19
    • 2012-07-13
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多