繁体   English   中英

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

[英]How to convert JavaScript object into LITERAL string?

如果我有对象文字:

{a: "hello"}

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

'{a: "hello"}'

使用JSON.stringify的输出将是

'{"a": "hello"}'

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

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

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

您可以使用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)); 

确实会将其转换为文字语法。 您可以使用多种语法形式创建对象。 以下两个对象声明均有效:

var a = {a: "a"}
var b = {"b": "b"}

如果要删除键周围的“”,则应该可以将它们与以下正则表达式/\\"(.*?)\\":/g匹配,并用类似以下的内容替换它们:

function reformat(str) {
    var myRegexp = /\"(.*?)\":/g;
    match = myRegexp.exec(str);
    while (match != null) {
        str = str.replace(match[0], match[1] + ":");
        match = myRegexp.exec(str);
    }

    return str;
}

希望有帮助:)

好吧,只是为了好玩...自己滚?

 const stringify = (obj) => { // Iterate over keys, reducing to a string let str = Object.keys(obj).reduce((acc, cur) => { let next = `${cur}: "${obj[cur]}"`; return acc ? `${acc}, ${next}` : `{${next}`; }, ''); // Return, appending final '}' return `${str}}`; } document.write(stringify({ foo:1, bar:'seat' })); 

也就是说,您的确切要求尚不清楚,因此我不确定这是否可以满足他们。 但是,如果没有本机解决方案有效,这可能是一个起点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM