将美化的JSON转换回正常状态

时间:2014-08-25 17:43:12

标签: javascript jquery regex json

我从JFiddle获得了以下代码,这有助于我美化json。

        if (!library)
           var library = {};

        library.json = {
           replacer: function(match, pIndent, pKey, pVal, pEnd) {
              var key = '<span class=json-key>';
              var val = '<span class=json-value>';
              var str = '<span class=json-string>';
              var r = pIndent || '';
              if (pKey)
                 r = r + key + pKey.replace(/[": ]/g, '') + '</span>: ';
              if (pVal)
                 r = r + (pVal[0] == '"' ? str : val) + pVal + '</span>';
              return r + (pEnd || '');
              },
           prettyPrint: function(obj) {
              var jsonLine = /^( *)("[\w]+": )?("[^"]*"|[\w.+-]*)?([,[{])?$/mg;
              return JSON.stringify(obj, null, 3)
                 .replace(/&/g, '&amp;').replace(/\\"/g, '&quot;')
                 .replace(/</g, '&lt;').replace(/>/g, '&gt;')
                 .replace(jsonLine, library.json.replacer);
              }
           };

但是在以美化形式进行一些小编辑之后,我想让json恢复正常状态。

我在样本json上试了一下

  { active: "<b>something</b>", codes: [48348, 28923, 39080], city: "London" }

我在下面给出了什么。

var prettyJson = $("#prettyJsonContainer").text(); //this will strip all html tags
var pureJson = JSON.stringify(prettyJson);

但结果是

"{\n   active: \"<b>something</b>\",\n   codes: [\n      48348,\n      28923,\n      39080\n   ],\n   city: \"London\"\n}"

预期的Json是

     { active: "<b>something</b>", codes: [48348, 28923, 39080], city: "London" }

请帮忙。

1 个答案:

答案 0 :(得分:0)

var str = "{\n   active: \"<b>something</b>\",\n   codes: [\n      48348,\n      28923,\n      39080\n   ],\n   city: \"London\"\n}";
str = str.replace(/\\/g, "");
console.log(str);

这将删除\ n,JSON和输出中的所有空格将如下:

{
   active: "<b>something</b>",
   codes: [
      48348,
      28923,
      39080
   ],
   city: "London"
}

JSFiddle:http://jsfiddle.net/rahulrulez/jq1ot5j5/