首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >与使用JSON.stringify()相比,使用toString()有什么不同?

与使用JSON.stringify()相比,使用toString()有什么不同?
EN

Stack Overflow用户
提问于 2013-04-05 20:36:39
回答 3查看 35.4K关注 0票数 58

在这两种情况下,我都会输出对象的内容:

代码语言:javascript
复制
alert(JSON.stringify(obj));

代码语言:javascript
复制
alert(obj.toString());

所以..。有什么关系呢?每种方法的优点或缺点是什么?

有没有实际的例子来说明不同之处?

EN

回答 3

Stack Overflow用户

发布于 2013-04-05 20:49:11

除非您有一个自定义对象,该对象具有返回该对象JSON.stringify的自定义.toString方法,否则不存在提供obj.toString() == JSON.stringify(obj)obj

obj是像[1,2,3]这样的数组时,.toString()提供:

代码语言:javascript
复制
"1,2,3"

JSON.stringify

代码语言:javascript
复制
"[1,2,3]"

它们很接近,但并不完全相同,JSON序列化的JSON没有逗号的歧义,直接作为Javascript运行,或者可以解析为JSON。

请参见:

代码语言:javascript
复制
["1,",2,3].toString();
//"1,,2,3" ... so you can't just split by comma and get original array
//it is in fact impossible to restore the original array from this result

JSON.stringify(["1,",2,3])
//'["1,",2,3]'
//original array can be restored exactly
票数 50
EN

Stack Overflow用户

发布于 2013-04-05 20:38:36

对于一个对象,假设

代码语言:javascript
复制
obj = { a: 'a', '1': 1 }

obj.toString()给出

代码语言:javascript
复制
"[object Object]"

JSON.stringify(obj)给出

代码语言:javascript
复制
"{"1":1,"a":"a"}"

对于.toString(),当参数类型为object时,将返回默认值。另一方面,JSON.stringify返回JSON文本,可以使用JSON.parse将其转换回JSON对象

票数 29
EN

Stack Overflow用户

发布于 2019-09-02 01:39:22

您可以在JSON.stringify中使用replacer和空格参数,将replacer参数作为函数传递,您可以修改对象和空格参数,这有助于在每个键值对之前提供额外的空格。

代码语言:javascript
复制
const replacer = (key, value) => {
        // Filtering out properties
        if (typeof value === 'number') {
            return 1;
        }
        return value;
    },

    foo = {
        country: 'India',
        state: 'Gujarat',
        district: 45,
        cm: 'car',
        am: 7
    },

    result = JSON.stringify(foo, replacer);

console.log(result) // {"country":"India","state":"Gujarat","district":1,"cm":"car","am":1}

空格论点-

代码语言:javascript
复制
const obj = { a : 1, b:2};

const obj_str = JSON.stringify(obj, null, '     ');// '\t' gives one tab 

console.log(obj_str)

有关更多详细信息,请访问此link.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15834172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档