【问题标题】:Ace-Editor JSON auto format/indentAce-Editor JSON 自动格式/缩进
【发布时间】: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));
};

【问题讨论】:

    标签: javascript html json ace-editor


    【解决方案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 文件切换显示选项。

    【讨论】:

    • 其他语言怎么做?