WSO2 Integration Studio中JSON转换JS代码报错问题求助
问题原因与解决办法
错误原因
你写的{element}是ES6的对象扩展语法,普通现代JS环境(比如Node.js、新版浏览器)支持,但WSO2 Integration Studio内置的JavaScript引擎(多为旧版Rhino/Nashorn,对ES6特性支持有限)不识别这个语法,所以IDE会报语法错误。
另外你的代码还有两处疏漏:一是原输入的name是"esempio create",目标格式需要改成"example",当前代码没处理这个转换;二是element包含operation字段,目标格式的other_data里不需要这个字段,直接展开会把多余字段带进去。
替代实现方式
方式1:手动指定字段(字段固定时最稳妥)
直接逐个写入需要的字段,同时完成name的替换:
// 假设element是解析后的输入JSON对象 var otherData = { id: element.id, name: "example", // 替换原name为目标值 status: element.status, country: element.country }; var result = JSON.stringify({ operations: [{ operation: "C", element: { type: element.type, other_data: otherData } }] });
方式2:用Object.assign过滤字段(字段较多时更高效)
复制element属性后删除不需要的字段,再替换name值:
var otherData = Object.assign({}, element); // 删除不需要的字段 delete otherData.operation; delete otherData.type; // 替换name值 otherData.name = "example"; var result = JSON.stringify({ operations: [{ operation: "C", element: { type: element.type, other_data: otherData } }] });
方式3:循环构建目标对象
遍历原对象属性,筛选并处理需要的字段:
var otherData = {}; var allowedFields = ["id", "name", "status", "country"]; for (var key in element) { if (allowedFields.includes(key)) { otherData[key] = key === "name" ? "example" : element[key]; } } var result = JSON.stringify({ operations: [{ operation: "C", element: { type: element.type, other_data: otherData } }] });
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

