如何将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] //不知道里面有什么:(
当前回答
实际上,现有的答案中缺少一个简单的选项(适用于最近的浏览器和Node.js):
console.log('Item: %o', o);
我更喜欢这样做,因为JSON.stringify()有一定的限制(例如循环结构)。
其他回答
如果你只是输出到控制台,你可以使用console.log('string:', obj)。注意逗号。
我正在寻找这个,并写了一个深度递归缩进:
function objToString(obj, ndeep) {
if(obj == null){ return String(obj); }
switch(typeof obj){
case "string": return '"'+obj+'"';
case "function": return obj.name || obj.toString();
case "object":
var indent = Array(ndeep||1).join('\t'), isArray = Array.isArray(obj);
return '{['[+isArray] + Object.keys(obj).map(function(key){
return '\n\t' + indent + key + ': ' + objToString(obj[key], (ndeep||1)+1);
}).join(',') + '\n' + indent + '}]'[+isArray];
default: return obj.toString();
}
}
使用方法:objToString({a: 1, b: {c: "test"}})
当然,要将对象转换为字符串,你必须使用自己的方法,例如:
function objToString (obj) {
var str = '';
for (var p in obj) {
if (Object.prototype.hasOwnProperty.call(obj, p)) {
str += p + '::' + obj[p] + '\n';
}
}
return str;
}
实际上,以上只是展示了一般方法;您可能希望使用诸如http://phpjs.org/functions/var_export:578或http://phpjs.org/functions/var_dump:604之类的东西
或者,如果你不使用方法(函数作为对象的属性),你可以使用新的标准(但在旧的浏览器中没有实现,尽管你也可以找到一个实用工具来帮助它们),JSON.stringify()。但同样,如果对象使用的函数或其他属性不能序列化为JSON,这将不起作用。
更新:
一个更现代的解决方案是:
function objToString (obj) {
let str = '';
for (const [p, val] of Object.entries(obj)) {
str += `${p}::${val}\n`;
}
return str;
}
or:
function objToString (obj) {
return Object.entries(obj).reduce((str, [p, val]) => {
return `${str}${p}::${val}\n`;
}, '');
}
var obj={
name:'xyz',
Address:'123, Somestreet'
}
var convertedString=JSON.stringify(obj)
console.log("literal object is",obj ,typeof obj);
console.log("converted string :",convertedString);
console.log(" convertedString type:",typeof convertedString);
我用for in和template literal来在字符串中有两个键-值对,这对我有用。
让obj = { 名称:“约翰”, 年龄:22岁 isDev:没错, }; let toStr = ""; For (let key in obj) { if (obj.hasOwnProperty(key)) { toStr += ' ${key} ${obj[key]} ' + ", "; } } console.log (toStr); console.log (typeof toStr);