如果我有对象文字:
{a: "hello"}
是否有Javascript函数将该对象转换为文字字符串,以便输出为文字语法:
'{a: "hello"}'
使用JSON.stringify
,输出将是
'{"a": "hello"}'
答案 0 :(得分:3)
JavaScript没有内置函数可以将对象转换为其字符串表示形式,或者:
您可以为前者编写自己的函数(至少当属性名称 可以表示为文字时),但是后者是不可能的,因为JavaScript不存储有关用于创建的源代码的信息首先是对象。
答案 1 :(得分:1)
您可以先用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));
答案 2 :(得分:0)
它确实将其转换为文字语法。您可以使用多种语法形式创建对象。以下两个对象声明均有效:
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;
}
希望有帮助:)
答案 3 :(得分:0)
好吧,只是为了好玩...自己滚?
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'
}));
也就是说,您的确切要求尚不清楚,因此我不确定这是否可以满足他们。但是,如果没有适用的本机解决方案,这可能是一个起点。