繁体   English   中英

在 Google Sheet Apps Script 中缩进漂亮的 JSON

[英]Indent pretty JSON in Google Sheet Apps Script

我想显示一个带有漂亮 JSON 的警报,但它没有很好地缩进。

这是我正在使用的 JS 代码:

var jsonText = JSON.stringify(jsonObject, null, 2)
SpreadsheetApp.getUi().alert(jsonText);

这是我得到的缩进:

...
"xxx": "",
"xxx": ""
},
{
"xxx": "yyy",
"xxx": "yyy",
"xxx": "",
"xxx": ""
}
]

它缺少制表符缩进,知道如何解决这个问题吗?

似乎正常的空格\\u{0020}字符已从 SpreadsheetApp Ui.alert()函数中删除。 您可以使用此答案中提到的任何其他空格字符作为空格字符。 \\u{2000}作品:

  SpreadsheetApp.getUi().alert(
    JSON.stringify(
      { x: 1, y: 2, z: [1, 2, { a: { b: 1 } }] },
      null,
      '\u{2000}'.repeat(2)
    )
  );

我知道在警报窗口中漂亮打印 JSON 的唯一方法是强制JSON.stringify()space参数使用硬编码的不间断空格字符。

例子:

function popup() {
  var jsonObject = [{"x":1,"y":2},{"x":1,"y":2}];
  // warning - the two spaces used below need to be non-breaking spaces:
  var jsonText = JSON.stringify(jsonObject, null, "  ");
  SpreadsheetApp.getUi().alert(jsonText);
}

这会在警报窗口中生成以下结果:

在此处输入图片说明

注意- 您可能无法从我的答案中复制/粘贴那些不间断空格 - 我认为您最终只会复制常规空格,这不会为您提供所需的缩进(它们将根据关于连续空格的标准 HTML 规则折叠) .

因此,您可以使用键盘手动输入 NBSP 字符。

对于我在 Windows 上,这是通过我按住ALT键并输入数字序列0160

在 Mac 上它是opt + space

有关更多系统,请参阅nbsp 键盘输入方法


就我个人而言,我觉得这有点令人不快——你不能轻易说这些是硬编码的 NBSP——它们看起来像源代码中的常规空格。 这就是我在代码中添加注释的原因。 如果有更清洁的解决方案,那将得到我的投票。

(并且使用 序列对我不起作用 - 它被视为文字字符串)。

您可以在文本区域中看到缩进:

function onMyEdit(e) {
  SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(`<textarea cols="30" rows="12">${JSON.stringify(e,['range','columnStart','rowStart','value','source','rowEnd','rowStart','oldValue'],10)}</textarea>`),'Simple Dialog');
}

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM