如何将JavaScript对象转换为字符串?
例子:
var o = {a:1, b:2}
console.log(o)
console.log('Item: ' + o)
输出:
对象{a=1, b=2} //非常好的可读输出:) Item: [object object] //不知道里面有什么:(
如何将JavaScript对象转换为字符串?
例子:
var o = {a:1, b:2}
console.log(o)
console.log('Item: ' + o)
输出:
对象{a=1, b=2} //非常好的可读输出:) Item: [object object] //不知道里面有什么:(
当前回答
function objToString (obj) {
var str = '{';
if(typeof obj=='object')
{
for (var p in obj) {
if (obj.hasOwnProperty(p)) {
str += p + ':' + objToString (obj[p]) + ',';
}
}
}
else
{
if(typeof obj=='string')
{
return '"'+obj+'"';
}
else
{
return obj+'';
}
}
return str.substring(0,str.length-1)+"}";
}
其他回答
如果您正在使用Dojo javascript框架,那么已经有一个内置函数来完成此工作:Dojo . tojson(),它将像这样使用。
var obj = {
name: 'myObj'
};
dojo.toJson(obj);
它将返回一个字符串。如果要将对象转换为json数据,则添加第二个参数true。
dojo.toJson(obj, true);
http://dojotoolkit.org/reference-guide/dojo/toJson.html#dojo-tojson
看看jQuery-JSON插件
它的核心是使用JSON。但是如果浏览器没有实现它,它就会退回到自己的解析器。
如果你可以使用lodash,你可以这样做:
> var o = {a:1, b:2};
> '{' + _.map(o, (value, key) => key + ':' + value).join(', ') + '}'
'{a:1, b:2}'
使用lodash map()也可以遍历对象。 这将每个键/值条目映射到它的字符串表示形式:
> _.map(o, (value, key) => key + ':' + value)
[ 'a:1', 'b:2' ]
join()将数组条目放在一起。
如果你可以使用ES6模板字符串,这也是有效的:
> `{${_.map(o, (value, key) => `${key}:${value}`).join(', ')}}`
'{a:1, b:2}'
请注意,这不是递归通过对象:
> var o = {a:1, b:{c:2}}
> _.map(o, (value, key) => `${key}:${value}`)
[ 'a:1', 'b:[object Object]' ]
就像node的util.inspect()一样:
> util.inspect(o)
'{ a: 1, b: { c: 2 } }'
在你知道对象只是一个布尔值的情况下,日期,字符串,数字等…javascript的String()函数工作得很好。我最近发现这在处理来自jquery的$的值时很有用。每个函数。
例如,下面将“value”中的所有项转换为字符串:
$.each(this, function (name, value) {
alert(String(value));
});
详情如下:
http://www.w3schools.com/jsref/jsref_string.asp
如果你想在内联表达式类型的情况下用最简单的方法将变量转换为字符串,“+variablename是我打过的最好的球。
如果'variablename'是一个对象,你使用空字符串连接操作,它将给出烦人的[object object],在这种情况下,你可能想要Gary C。JSON获得了极大的好评。stringify问题的答案,你可以在Mozilla的开发者网络的答案在顶部的链接中阅读。