You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Google Sheet数据解析为JSON时如何保留换行符?

解决Google Sheets Apps Script生成JSON时换行符被双重转义的问题

问题原因

单元格中的\n是字面量字符(由\和n两个字符组成),当通过String(value)获取后,JSON.stringify会对字符串中的\自动转义,导致最终JSON中出现\\n。要让JSON中保留单个\n,需要先把字面量的\n转换为实际的换行控制字符。

修改方案

在将value转为字符串后,添加替换逻辑,把字面量的\\n替换为实际换行符:

修改代码中处理prefs和text字段的部分:

if (headers[j] === 'prefs' || headers[j] === 'text') {
  if (value != null) {
    // 将字面量的\n替换为实际换行符
    obj[headers[j]] = String(value).replace(/\\n/g, '\n');
  } else {
    obj[headers[j]] = value;
  }
}

原理说明

  • String(value).replace(/\\n/g, '\n'):全局匹配字符串中的\n(两个字符),替换为实际的换行控制字符\n。
  • 当JSON.stringify处理包含实际换行符的字符串时,会自动将其转义为JSON标准的\n(单个反斜杠),最终生成的JSON中就会显示"first line\nsecond line",符合需求。

完整修改后的核心代码片段

var objects = data.map(function(row) {
  var obj = {};
  for (var j = 0; j < headers.length; j++) {

    var value = (row[j] === '') ? null : row[j];

    if (headers[j] === 'prefs' || headers[j] === 'text') {
      if (value != null) {
        // 新增替换逻辑,将字面量\n转为实际换行符
        obj[headers[j]] = String(value).replace(/\\n/g, '\n');
      } else {
        obj[headers[j]] = value;
      }
    } else {
      obj[headers[j]] = value;
    }
  }
  return obj;
});

内容的提问来源于stack exchange,提问作者soleil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 23:19:56