Cypress中如何为JSON文件内的对象添加分隔逗号
解决Cypress中
cy.writeFile生成非法JSON的问题 问题场景
当前使用Cypress的cy.writeFile代码如下:
cy.writeFile("cypress/fixtures/xlsxData.json", Newdata , { flag: 'a+' })
其中Newdata定义为:
let Newdata = { FirstName:F_jsonData[i][0], MiddleName:F_jsonData[i][1], LastName:F_jsonData[i][2] }
生成的xlsxData.json内容格式非法,对象间缺少逗号:
[ { "FirstName": "ABC", "MiddleName": "K", "LastName": "edf" }{ "FirstName": "sss", "MiddleName": "g", "LastName": "efg" } ]
需要解决对象间添加逗号,使JSON格式合法的问题。
解决方案
方法1:读取现有数据合并后整体写入(推荐)
直接追加单个对象会破坏JSON数组结构,正确的做法是先读取文件中已有的数组,将新对象加入数组后重新写入整个数组:
// 读取现有JSON数据 cy.readFile("cypress/fixtures/xlsxData.json").then(existingData => { // 初始化数组:如果文件为空或非数组,默认空数组 const dataArray = Array.isArray(existingData) ? existingData : []; // 生成新对象 const newData = { FirstName: F_jsonData[i][0], MiddleName: F_jsonData[i][1], LastName: F_jsonData[i][2] }; // 追加新对象到数组 dataArray.push(newData); // 重新写入完整的合法JSON数组 cy.writeFile("cypress/fixtures/xlsxData.json", dataArray); });
这种方式完全由Cypress和JSON处理逻辑保证格式合法性,无需手动处理符号拼接,避免边界错误。
方法2:手动处理追加格式(不推荐)
如果必须使用追加模式,需要判断文件现有内容,手动拼接逗号:
// 将新对象转为格式化的JSON字符串 const newDataStr = JSON.stringify({ FirstName: F_jsonData[i][0], MiddleName: F_jsonData[i][1], LastName: F_jsonData[i][2] }, null, 2); cy.readFile("cypress/fixtures/xlsxData.json").then(content => { let writeContent = newDataStr; const trimmedContent = content.trim(); // 处理非空数组的情况:去掉末尾的']',添加逗号和新对象后补回']' if (trimmedContent !== '[]') { writeContent = trimmedContent.slice(0, -1) + ',\n' + newDataStr + ' ]'; } else { // 处理空数组的情况:直接替换内部内容 writeContent = '[ ' + newDataStr + ' ]'; } // 覆盖写入处理后的内容 cy.writeFile("cypress/fixtures/xlsxData.json", writeContent, { flag: 'w' }); });
这种方法需要处理多种边界场景(如文件为空、仅含单个对象等),容易出现格式错误,仅在特殊场景下使用。
内容的提问来源于stack exchange,提问作者QATester
相关产品推荐
相关产品推荐

