javascript - 这段代码为什么错了?
高洛峰
高洛峰 2017-04-10 16:48:48
[JavaScript讨论组]

我想把一段JSON数据按每个键值一个个打印出来,应该怎么改?

var o = {
  "ad": "gch",
  "bd": "123"
};
var m = o.toString();
var tasks = JSON.parse(m);
for (var i in tasks) {
  console.log(tasks[i]);
}
undefined:1
[object Object]
 ^
SyntaxError: Unexpected token o
    at Object.parse (native)
    at Object.<anonymous> (/Users/guchenghao/Atom-code/program/javascript/test.js:6:18)
    at Module._compile (module.js:435:26)
    at Object.Module._extensions..js (module.js:442:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Function.Module.runMain (module.js:467:10)
    at startup (node.js:136:18)
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(4)
天蓬老师

我知道楼主是想把一个对象变为字符串,然后再把它变为对象,正常的思路是使用

JSON.stringify();
JSON.parse()

但是,tonString方法不是也可以返回字符串吗,楼主就采用了toString,可能是犀牛书上关于它讲得太多了,关于toString为何不对,请看链接描述
所以楼主的改为:

var o = {
  "ad": "gch",
  "bd": "123"
};
var m = JSON.stringify(o);
var tasks = JSON.parse(m);
for (var i in tasks) {
  console.log(tasks[i]);
}

事实上,把对象转变为字符串,最简单的好像还就是JSON.stringify()

大家讲道理

因为o.toString 结果为
'[object Object]'
它不是一个合法的JSON格式的字符串,JSON.parse自然就出错~~
上面代码怎么做的目的是?

想把键值打印出来,这样就好~~

var o = {
  "ad": "gch",
  "bd": "123"
};
for (var i in o) {
  console.log(o[i]);
}
PHPz

o.toString()返回的不是json

伊谢尔伦

你一定要这么做的话,那么就把

var m = o.toString();

改成

var m = JSON.stringify(o);

就可以了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号