在[之前的帖子中](字段事件调用 API,返回的对象数组应该怎么在子表中呈现 | HAP 社区 (mingdao.net)),发现即使按照规则很规范地设置了字段映射之后,返回的多组数据还是不能映射到子表中。
问了几位资深的明道云技术人员后,发现是返回的数组中格式不规范,于是设计了以下 JavaScript 代码:
function convertToArrayOfObjects(obj) {
Object.keys(obj).forEach(key => {
if (obj[key] !== null && typeof obj[key] === 'object' && !Array.isArray(obj[key])) {
// 如果属性值是对象而不是数组,则将其转换为数组
obj[key] = [obj[key]];
} else if (Array.isArray(obj[key])) {
// 如果属性值是数组,递归检查数组中的每个元素
obj[key].forEach(element => {
if (typeof element === 'object') {
convertToArrayOfObjects(element);
}
});
} else if (typeof obj[key] === 'object') {
// 如果属性值是对象,递归检查该对象
convertToArrayOfObjects(obj[key]);
}
});
}
// 示例JSON对象
const jsonString = input.str;
const jsonObject = JSON.parse(jsonString);
// 调用函数
convertToArrayOfObjects(jsonObject);
output =jsonObject;
这段代码可以将多维数组转换成对象数组,同时解决一些格式问题,希望有所帮助 😄 😄