javascript - 尝试使用现有对象中的 jsonata 创建对象
问题描述
尝试使用 jsonata 从现有对象中创建对象。当数据和表达式放入 jsonata excerciser 时,会生成正确的结果。但是,当我在 Javascript 程序中运行它时,会产生错误。
以下是javascript代码
const data = {
"compCode": "0006",
"compState": "MH",
"recvDocNo": "0075",
"buCode": "AC",
"branchCode": "001",
"recvLines": [
{
"lineNo": 1,
"itemId": "00002",
"qtyAccept": 10,
"unitRate": 100,
"basicVal": 1000,
"taxableAmt": 1000,
}
]
};
let expr = {
"compCode": compCode,
"buCode": buCode,
"lineNo": recvLines.lineNo,
"itemId": recvLines.itemId
};
jsonata(expr).evaluate(data);
我收到错误 - ReferenceError: compCode 未定义
当我将其更改为 data.compCode 和所有其他类似的对象属性时,我收到错误 TypeError: path.charAt is not a function。有人可以告诉我如何让它工作。提前致谢
解决方案
看起来jsonata()
需要一个字符串表达式作为参数,这在文档中没有明确说明,但在In Nodejs部分中显示。
const data = {
"compCode": "0006",
"compState": "MH",
"recvDocNo": "0075",
"buCode": "AC",
"branchCode": "001",
"recvLines": [
{
"lineNo": 1,
"itemId": "00002",
"qtyAccept": 10,
"unitRate": 100,
"basicVal": 1000,
"taxableAmt": 1000,
},
{
"lineNo": 2,
"itemId": "00006",
"qtyAccept": 10,
"unitRate": 100,
"basicVal": 1000,
"taxableAmt": 1000,
}
]
};
let expr = `{
"compCode": compCode,
"buCode": buCode,
"lineNo": recvLines.lineNo,
"itemId": recvLines.itemId
}`;
console.log(jsonata(expr).evaluate(data));
<script src="https://cdn.jsdelivr.net/npm/jsonata@1.8.5/jsonata.min.js"></script>
推荐阅读
- angular - 在 angular cli 项目上运行 npm i 时出现致命错误 LNK1106:无效文件或磁盘已满。会是什么原因
- android - Android(Kotlin) 应用程序在 Android 6 上运行完美,但使装有 Android 10 的设备崩溃
- perforce - 从软件仓库运行 Perforce Trigger 可执行文件
- reactjs - ReactJS - 数据不会从 axios 调用加载到下拉列表中
- python - 找到包含至少一个偶数的第 N 个数字
- sitecore - Sitecore 9.2 中内容作者和管理员的会话超时设置在哪里?
- android - 使用 exoplayer 从 byte[] 播放音频,从 jetpack 安全文件加密解密
- node.js - 使用 Fastify 的 Mongoose 多连接
- mysql - 如何创建如何在 typeorm 中创建多对多关系,[NestJS]
- qiskit - 如何获取默认的 EquivalenceLibrary?