gpt4 book ai didi

javascript - toString 所有对象数据

转载 作者:太空宇宙 更新时间:2023-11-04 02:53:38 27 4
gpt4 key购买 nike

我在node.js中有一个像这样的对象(json):

var data = {
string : "name",
number : 123456789 ,
n : null ,
bool : false ,
bool2 : true
};

但我需要将其转换为这样的内容:

{
string : "name",
number : "123456789" ,
n : "null" ,
bool : "false" ,
bool2 : "true"
};

我使用了这个代码,但不起作用。

for ( var index in data ){
data[index] = data[index].toString();
};
// or this
data.toString();

如何修复它?

更新

此数据对象被创建为新的 Mongoose 模式。

最佳答案

您的代码看起来不错,除了一件事:null 没有 .toString() 方法。因此,最好使用 String 代替:

for ( var key in data ){
data[key] = String(data[key]);
};

String 是一个字符串构造函数。它接受任何内容并生成它的字符串表示形式。

更新

但是这个解决方案不适用于复杂的数据结构。不过,如果您需要 JSON 字符串,那么您可以使用 JSON.stringify与棘手的replacer :

function replaceWithString(k, v) {
if ((typeof v === 'object') && (v !== null)) {
return v;
} else {
return String(v);
}
}
JSON.stringify(data, replaceWithString);

如果你想让它变得漂亮:

JSON.stringify(data, replaceWithString, 2);

注意 正如 Bergi 在评论中注意到的,您可以使用 Object(v) === v 而不是 (typeof v === 'object') && (v !== null) 来检查 v 是否是一个对象。

更新2

看起来您的示例中的data是一个mongoose文档。

mongoose 的问题在于,它用一整套令人讨厌的 getter 和 setter 来包装所有对象,使它们看起来像普通的 JS 对象,但事实并非如此。

因此,如果您正在使用 mongoose 文档,您应该调用 .toObject().toJSON()在尝试用它做任何事情之前:

data = doc.toObject(); // converts doc to plain JS object

尽管如此,我使用 JSON.stringify 的第二个解决方案应该可以工作,因为 stringify 自动调用 .toJSON()

关于javascript - toString 所有对象数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25249283/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com