{
"_id": "510765614cbf920479be4db6",
"article_id": 59276,
"title": "西班牙9月服务业PMI为2011年11月以来最低",
"title_other": "",
"title_font": "",
"title_color": "",
"outlink": "",
"title_img": "",
"keyword": "",
"summary": "",
"author": "",
"source": "",
"state": 0,
"editor": "system",
"ctrolTime": "2012-10-03 15:11:23.0",
"updateTime": "2012-10-03 15:11:23.0",
"editTime": "2012-10-03 15:11:23.0",
"topeak": 0,
"visit_count": 1,
"key_url": "",
"channel_id": 0,
"lanmu_id": 0,
"content": [
"西班牙9月服务业PMI为2011年11月以来最低。"
],
"lanmu": {
"lanmu_id": 2,
"channel_id": 1,
"lanmuName": "数据快递",
"detail": "",
"state": 0,
"parent_id": 0,
"lanmu_layer": 0,
"url": "",
"lanmuTag": ""
},
"channel": {
"channel_id": 1,
"channelName": "财经速递",
"detail": "",
"state": 0,
"channelTag": "cjsd",
"display": 0
},
"extlist": [],
"extnamesmap": [
{
"ext_id": 0,
"extName": "",
"extCode": "",
"extType": ""
}
],
"toppic": {
"topic_id": 0,
"topicName": "",
"detail": "",
"topicTag": ""
},
"topic_id": 0,
"sharon": {
"sha_id": 0,
"article_id": 59276,
"sha_name": "",
"sha_desc": "",
"sha_content": "",
"teacher": "",
"teadetail": "",
"tea_pic": "",
"sha_addr": "",
"sha_lat": "",
"sha_lon": "",
"sha_map": "",
"sha_st": "",
"sha_cell": "",
"sha_mobile": "",
"sha_qq": "",
"sha_email": "",
"sha_busline": "",
"sha_carline": "",
"sha_pic": ""
},
"company": {
"company_id": 0,
"article_id": 59276,
"comp_name": "",
"comp_logo": "",
"comp_desc": "",
"comment_link": "",
"comp_commt": "",
"comp_qq": "",
"comp_mobile": "",
"comp_cell": "",
"comp_email": ""
},
"analysor": {
"analsy_id": 0,
"article_id": 59276,
"analsy_name": "",
"analsy_pic": "",
"analsy_desc": "",
"analsy_link": ""
}
}
如上字符串,在JSON解析工具http://www.json.org.cn/tools/JSONEditorOnline/index.htm下可以解析。可是nodejs 中用JSON.parse()。却提示undefined:1 [object object] Unexpected token 0
@jiyinyiyong
正解我觉得应该是这样的,JSON.parse(string)
采用了严格认证模式,参数string必须是一个符合JSON标准的字符串,例如标准中提到:键必须是字符串,字符串必须是双引号,只能出现字符串、数字、布尔这三种基本数据类型或者以这三种基本数据类型为元素的数组[]或者对象{}。对于程序中使用JSON.parse进行转换时,还约束了string中最好不要在2个键值对间有其他的符号例如空格、制表符、换行等。虽然有些工具会通过自动格式化认为你这个json是标准json字符串,但是建议程序中的json字符串不要违反JSON的一些基本标准。实现这一标准并不是强制的,但是实现标准能让json在其他语言环境下达到通用共识。
所以,出现这个问题,我觉得是直接拿这一长条的字符串(带有换汗和制表符)去转而导致的错误。
很easy的
“article_id”: 59276,
像上面这样的。必须转化成 “article_id”: “59276”,
也就是当你使用JSON.parse()时,key与value必须都得用 双引号 引起来,单引号也不行,必须是双引号,你可以用替换的方法把 冒号 到 豆号之间的加上 双引号
我刚测试了一下,并非是数字的转换原因,首先你要确保你拿到的这串数据是字符串,然后才可以JSON.parse,我在控制台把字符串弄成一行就ok了,代码如下:
原来是这样。不过存储的原型就是没加双引号的。后来又找了一下。我就不用json.parse了,因为获得这个字符串赋值给了doc。所以我想取里面的值,直接就用doc.title就是标题内容了。不用强转了。
我这里也遇到同样的问题: 读取 xxx.txt(里面就是一段 json)-> JSON.parse( fs.readFileSync( xxx.txt ) ) -> 报 SyntaxError: unexpected token 原因:文件编码问题 (windows 平台)xxx.txt 是用右键新建的文件,然后另存为 ‘utf-8’ 格式,但还是报语法错误 解决:用 sublime text (notepad 之类的也行)重新新建一个并保存,然后就可以成功 parse 了
我好像看到了几个中文引号,是不是浏览器显示错误?
如果出现了要如何解决呢?
JSON.parse要求传入的参数是严格的JSON格式字符串,如果直接传入一个对象,当然会报错
Nodejs 破解 不规范json字符串的处理方法 要说解决问题才是王道啊 就只接eval就好了,有可能会存在危险,这个方法是在dojo 的方法看到的
我试了一下,解析没问题啊
我勒个去,2年前的老帖
如果是文件中读的,可能是BOM问题。用二进制打开,前两个字节可能是0xFEFF或0xFFFE标识内容Endian