如何将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 = '';
    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`;
    }, '');
}

其他回答

JSON似乎接受了第二个参数,可以帮助函数- replace,这以最优雅的方式解决了转换问题:

JSON.stringify(object, (key, val) => {
    if (typeof val === 'function') {
      return String(val);
    }
    return val;
  });

如果只是想查看用于调试的对象,可以使用

var o = {a:1, b:2} 
console.dir(o)

再加上——

json。stringify(obj)很好, 但它会转换为json string object。 有时候我们需要它的字符串,比如在WCF http post中以body形式发布它并以字符串形式接收。

为此,我们应该重用stringify(),如下所示:

let obj = {id:1, name:'cherry'};
let jsonObj = JSON.stringify(doc); //json object string
let strObj = JSON.stringify(jsonObj); //json object string wrapped with string

当然,要将对象转换为字符串,你必须使用自己的方法,例如:

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);