如何将 JavaScript 对象转换为 LITERAL 字符串?

sir*_*ver 9 javascript json javascript-objects

如果我有对象文字:

{a: "hello"}
Run Code Online (Sandbox Code Playgroud)

是否有一个 Javascript 函数可以将此对象转换为文字字符串,以便输出将是文字语法:

'{a: "hello"}'
Run Code Online (Sandbox Code Playgroud)

随着JSON.stringify输出会

'{"a": "hello"}'
Run Code Online (Sandbox Code Playgroud)

Bha*_*ata 7

您可以使用JSON.stringify然后 来执行此操作,String.replace如下所示:

var jsObj =
{
    abc: "hello",
    bca: "allo",
    cab: "dd:cc",
    d: ["hello", "llo", "dd:cc"],
    e: {abc: "hello", bca: "allo", cab: "dd:cc"}
};

function format(obj)
{
    var str = JSON.stringify(obj, 0, 4),
        arr = str.match(/".*?":/g);

    for(var i = 0; i < arr.length; i++)
        str = str.replace(arr[i], arr[i].replace(/"/g,''));

    return str;
}

console.log(format(jsObj));
Run Code Online (Sandbox Code Playgroud)


Que*_*tin 3

JavaScript 没有内置函数可以将对象转换为它的字符串表示形式,其中:

  • 使用标识符而不是字符串作为属性名称
  • 表示用于创建对象的原始语法

您可以为前者编写自己的函数(至少当属性名称可以表示为文字时),但后者是不可能的,因为 JavaScript 首先不存储有关用于创建对象的源代码的信息。