【问题标题】:How to format JSON string in Javascript returned from controller如何在控制器返回的 Javascript 中格式化 JSON 字符串
【发布时间】:2020-11-10 12:36:27
【问题描述】:

我有从控制器返回的 JSON 字符串,如下图所示。

但我希望 JSON 字符串在每一行中都被格式化,如下图所示。

到目前为止我已经使用了以下方法,但不幸的是,任何建议/支持都将不胜感激。

$.ajax
                ({
                    type: "GET",
                    url: "/Transaction/showStuContact",
                    data: { "id": id },
                    dataType: "json",
                    success: function (data)
                    {
                        myJSONstring = JSON.stringify(data);

                        myJSONstring1 = myJSONstring.replace(/\\n/g, "")
                            .replace(/ /g, '')
                            .replace(/\\t+/g, "|")
                             .replace(/\\'/g, "")
                             .replace(/\\"/g, '')
                             .replace(/\\&/g, "")
                            .replace(/\\r/g, "")
                            .replace(/\\b/g, "")
                            .replace(/\\f/g, "");

                        alert(myJSONstring1);
                      

                       
                    }
                });

【问题讨论】:

  • JSON 是一些数据结构的文本表示。 JavaScript 函数 JSON.stringify() 创建一个 JSON。在 JSON 上进行字符串替换可能会破坏它并使其无效且无法解析。如果您需要更改生成的值,请更改 data 的属性或使用 data 生成不同的对象并将这个新对象编码为 JSON 并返回。
  • 知道如何使用 replace 或任何其他 JS 函数将逗号转换为换行符。我确信我正在寻找的一切。
  • JSON 的格式无关紧要,因为它的目的不是供人类阅读,而是传输或持久化,然后解析以恢复类似于用于创建它的数据结构。对于传输和持久性,最好没有不必要的空白字符的一长行。如果您需要很好地格式化它,请使用编辑器(现在大多数编程编辑器都知道如何很好地格式化几乎任何东西)。如果您从命令行使用 JSON,jq 非常适合格式化和操作。

标签: javascript json model-view-controller


【解决方案1】:

JSON 是一些数据结构的字符串表示。它不需要很好地格式化。它的目的不是被人类阅读,而是被传输或持久化,然后被解析以从中恢复一个类似于用于生成它的数据结构。为此,最好使用没有空格或换行等不必要字符的长行。

但是,如果您想生成人类可读的 JSON,您可以使用三个参数调用 JSON.stringify()。当提供第三个参数时,JSON 格式为多行,第三个参数告诉用于缩进内部块的行的空格字符数(每个块相对于其父块)。

const data = {
  id: 123,
  firstname: 'John',
  lastname: 'Doe',
  address: {
    city: 'New York City',
    street: 'any street',
  }
};

// for transport, persistence and restoration
console.log(JSON.stringify(data));

// for human consumption
console.log(JSON.stringify(data, null, 3));

运行上面的代码sn-p看看有什么区别。

【讨论】:

    【解决方案2】:
    $.ajax
                    ({
                        type: "GET",
                        url: "/Transaction/showStuContact",
                        data: { "id": id },
                        dataType: "json",
                        success: function (data)
                        {
                            myJSONstring = JSON.stringify(data);
    
                            myJSONstring1 = myJSONstring.replace(/,/g, '\n');
                                //.replace(/ /g, '')
                                //.replace(/\\t+/g, "|")
                                // .replace(/\\'/g, "")
                                // .replace(/\\"/g, '')
                                // .replace(/\\&/g, "")
                                //.replace(/\\r/g, "")
                                //.replace(/\\b/g, "")
                                //.replace(/\\f/g, "");
    
                                //.replace
                            alert(myJSONstring1);
    

    【讨论】:

    • 您以这种方式生成的输出不再是 JSON。如果您不需要 JSON,则不要将数据编码为 JSON。
    • @axiac 这很有意义。你还有什么要解释的吗?或者就是这样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-20
    • 2021-03-16
    • 1970-01-01
    • 2015-04-06
    相关资源
    最近更新 更多