在这两种情况下,我都会输出对象的内容:
alert(JSON.stringify(obj));
或
alert(obj.toString());
所以..。有什么关系呢?每种方法的优点或缺点是什么?
有没有实际的例子来说明不同之处?
发布于 2013-04-05 20:49:11
除非您有一个自定义对象,该对象具有返回该对象JSON.stringify
的自定义.toString
方法,否则不存在提供obj.toString() == JSON.stringify(obj)
的obj
。
当obj
是像[1,2,3]
这样的数组时,.toString()
提供:
"1,2,3"
和JSON.stringify
"[1,2,3]"
它们很接近,但并不完全相同,JSON序列化的JSON没有逗号的歧义,直接作为Javascript运行,或者可以解析为JSON。
请参见:
["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
发布于 2013-04-05 20:38:36
对于一个对象,假设
obj = { a: 'a', '1': 1 }
obj.toString()
给出
"[object Object]"
JSON.stringify(obj)
给出
"{"1":1,"a":"a"}"
对于.toString(),当参数类型为object时,将返回默认值。另一方面,JSON.stringify返回JSON文本,可以使用JSON.parse将其转换回JSON对象
发布于 2019-09-02 01:39:22
您可以在JSON.stringify中使用replacer和空格参数,将replacer参数作为函数传递,您可以修改对象和空格参数,这有助于在每个键值对之前提供额外的空格。
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}
空格论点-
const obj = { a : 1, b:2};
const obj_str = JSON.stringify(obj, null, ' ');// '\t' gives one tab
console.log(obj_str)
有关更多详细信息,请访问此link.
https://stackoverflow.com/questions/15834172
复制相似问题