DataWeave重命名JSON字段时AnyPoint Studio报类型不匹配问题
DataWeave运行正常但编辑器报类型错误相关问题
接口返回原始结构
调用WebService接口获取到的JSON响应如下:
{ "success": true, "timestamp": 1657529234, "source": "EUR", "quotes": { "EURUSD": 1.018589, "EURNOK": 10.254409, "EURPLN": 4.774992 } }
转换需求
移除quotes对象下所有键名的前缀EUR:例如将键EURUSD转换为USD,对应值保持不变,最终得到形如"USD":1.018589的结构。
实现代码与运行结果
编写的DataWeave 2.0转换代码如下:
%dw 2.0 import * from dw::core::Strings output application/json --- { success: payload.success, timestamp: payload.timestamp, source: payload.source, rates: payload.quotes mapObject ((val, key) ->{ (substring(key,3,6)):val }) }
代码实际运行输出完全符合预期,结果如下:
{ "success": true, "timestamp": 1657529234, "source": "EUR", "rates": { "USD": 1.018589, "NOK": 10.254409, "PLN": 4.774992 } }
遇到的问题
AnyPoint Studio编辑器提示1个类型校验问题,错误信息如下:
Expecting Type: `{ K?: V }`, but got: `Array<{|EURUSD: Numb...r, EURPLN: Number|}>`. |-- From: `{ K?: V }` |---- From: mapObject(object: `{ K?: V }`, mapper: (value: `V`, key: `K`, index: `Number`) -> `Object`) -> `Object`
已为Transform Message组件配置了对应的输入元数据,存在疑问:为什么代码运行无异常,但编辑器会报上述类型错误?
内容的提问来源于stack exchange,提问作者szpic
相关产品推荐
相关产品推荐

