Ace-Editor JSON 自动格式/缩进

Posted

技术标签:

【中文标题】Ace-Editor JSON 自动格式/缩进【英文标题】:Ace-Editor JSON auto format/indent 【发布时间】:2014-02-06 12:19:41 【问题描述】:

我刚刚开始使用 Ace Editor。根据doc “编辑器支持纯文本模式。所有其他语言模式都可以作为单独的模块使用,按需加载...” javascript 模式设置为editor.getSession().setMode("ace/mode/javascript"); 这仅适用于高亮语法。

就我而言,我正在使用 JSON - editor.getSession().setMode("ace/mode/json")

我想要实现的是

显示格式正确的 JSON 响应

问题是

Ace Editor 似乎无法处理 JS 对象或 JSON editor.setValue() 必须转成字符串

问题

如何在放置的字符串上设置自动格式/缩进 <div id="editor"></div>?

HTML:

<div id="editor"></div>

SCRIPT: jsonDoc 是来自服务器的数据

$scope.getData = function (jsonDoc) 
  var editor = ace.edit("editor");
  editor.getSession().setMode("ace/mode/json");
  editor.setTheme("ace/theme/twilight");
  editor.getSession().setTabSize(2);
  editor.getSession().setUseWrapMode(true);
  editor.setValue(JSON.stringify(jsonDoc));
;

【问题讨论】:

【参考方案1】:

要格式化您的 JSON 字符串,您可以使用 JSON.stringify 的附加参数。尝试类似

editor.setValue(JSON.stringify(jsonDoc, null, '\t'));

第三个参数用于每个级别的缩进。 (在不同的实现中可能会有所不同)。有关示例,请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify。

您还可以从 ace.js 文件切换显示选项。

【讨论】:

其他语言怎么做?

以上是关于Ace-Editor JSON 自动格式/缩进的主要内容,如果未能解决你的问题,请参考以下文章

使用 AutoHotkey 解析、生成和美化/格式化 Json?

VSCode 自定义代码格式和语言自动缩进(Django-Template 缩进)

Kubernetes------YAML

关于VSCode自动缩进/格式化复制粘贴的代码

Vim 中的自动格式选项 (=) 不能正确缩进 HTML+JS?

粘贴到循环/if语句时如何使NetBeans自动格式化缩进?