[英]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.