mule - JSON对象中的关键存在(Mule 4)
问题描述
我需要检查 JSON 对象中是否存在特定关键字,并在此基础上创建一个字符串。我的示例 dataweave 2.0 代码如下:
%dw 2.0
output application/json
var arr = {
"ID": "100",
"ProdId": "Prod",
"ProdName": "ABC"
}
---
if (arr pluck $$ joinBy ';' contains "ProdId") == true
then (String: "Product") else
if (arr pluck $$ joinBy ';' contains "EmpId") == true
then (String: "Employee") else null
根据变量的值,我需要有不同的字符串值。上面需要什么改变才能工作?
解决方案
我正在考虑使用“keysOf”函数(以前的 Object::keySet)和类似的东西:
%dw 2.0
output application/json
var arr = {
"ID": "100",
"ProdId": "Prod",
"ProdName": "ABC"
}
---
if (keysOf(arr) contains("ProdId" as Key)) "Product"
else if (keysOf(arr) contains("EmpId" as Key)) "Employee"
else "Not Recognized"
请注意,“keysOf”返回一个 Key 对象数组,而不是字符串。
编辑:
一种更动态的方法可以是这个:
%dw 2.0
output application/json
import firstWith from dw::core::Arrays
var arr = {
"ID": "100",
"ProdId": "Prod",
"ProdName": "ABC"
}
var myTypes = {
ProdId: "Product",
EmpId: "Employee"
}
var typeId = (keysOf(myTypes) firstWith (keysOf(arr) contains $)) as String
---
myTypes[typeId]
推荐阅读
- java - 请求中的多个方法调用
- java - 如何使用 Selenium 和 Java 在多个帧之间切换
- r - R根据变量重新调整第二个Y轴
- python - Flask 会话不会跨请求持续存在
- javascript - react-native run-android 失败
- python - 如何在数据框中添加缺失的日期并填充python中的其他相应列?
- django - Stripe 使用 django 的 webhook 说:stripe.error.SignatureVerificationError
- css - 仅在 Chrome 中出现奇怪的 CSS 阴影错误?
- android - 由于带有新代码的新版本,有关如何在 Android Studio 中编写 Soundboard 的教程后出现问题
- amazon-s3 - 有没有办法在 S3 存储桶策略中包含组织 ID