Nodejs中json字符串无法解析

Nodejs中json字符串无法解析

{
“_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


14 回复

在Node.js中解析JSON字符串时遇到问题,通常是因为字符串格式不正确或使用了错误的方法。根据你提供的内容,我们可以通过检查JSON字符串的格式和使用正确的解析方法来解决这个问题。

示例代码

假设你有一个包含上述JSON对象的字符串变量jsonData,你可以使用以下代码来解析它:

const jsonData = `{
  "_id": "510765614cbf920479be4db6",
  "article_id": 59276,
  "title": "西班牙9月服务业PMI为2011年11月以来最低",
  // ... 其他字段
}`;

try {
  const parsedData = JSON.parse(jsonData);
  console.log(parsedData);
} catch (error) {
  console.error('Error parsing JSON:', error.message);
}

解释

  1. 检查JSON字符串格式

    • 确保你的JSON字符串没有语法错误,例如缺少逗号、引号不匹配等。
    • 你提供的字符串看起来是有效的JSON,但最好还是通过在线工具(如你提到的http://www.json.org.cn/tools/JSONEditorOnline/index.htm)验证一下。
  2. 使用JSON.parse()方法

    • JSON.parse()是JavaScript内置的方法,用于将JSON字符串转换为JavaScript对象。
    • 如果字符串格式不正确,JSON.parse()会抛出一个错误。因此,我们将其放在try...catch块中以捕获并处理错误。
  3. 错误处理

    • 使用try...catch块可以捕获到任何解析错误,并输出错误信息,帮助你定位问题。

常见问题

  • 字符串中的特殊字符:确保字符串中的所有特殊字符(如引号、反斜杠等)都被正确转义。
  • 字符串变量是否正确赋值:确保jsonData变量确实包含了完整的JSON字符串。

通过以上步骤,你应该能够成功地在Node.js中解析JSON字符串。如果仍然有问题,请检查具体的错误信息,并确保所有部分都符合JSON规范。


很easy的

“article_id”: 59276,

像上面这样的。必须转化成 “article_id”: “59276”,

也就是当你使用JSON.parse()时,key与value必须都得用 双引号 引起来,单引号也不行,必须是双引号,你可以用替换的方法把 冒号 到 豆号之间的加上 双引号

我刚测试了一下,并非是数字的转换原因,首先你要确保你拿到的这串数据是字符串,然后才可以JSON.parse,我在控制台把字符串弄成一行就ok了,代码如下:图片

原来是这样。不过存储的原型就是没加双引号的。后来又找了一下。我就不用json.parse了,因为获得这个字符串赋值给了doc。所以我想取里面的值,直接就用doc.title就是标题内容了。不用强转了。

把我的回复删掉了… 好奇怪, 现在的 Chrome 里 JSON.parse 需要正确的 JSON 字符串才行… 上次回帖的时候我特意在浏览器执行了一遍记得是不一样的…

我这里也遇到同样的问题: 读取 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

根据你的描述,你在使用 JSON.parse() 解析 JSON 字符串时遇到了错误。错误信息 Unexpected token 0 通常表示字符串格式不正确或包含了一些非预期的字符。

让我们先确保 JSON 字符串是正确的,并且没有任何额外的字符或空格。你可以使用 JSON.stringify() 将一个 JavaScript 对象转换成 JSON 字符串,然后再尝试解析它。

以下是一些可能的原因及解决方法:

示例代码

假设你有一个 JSON 字符串如下:

const jsonString = `
{
  "_id": "510765614cbf920479be4db6",
  "article_id": 59276,
  ...
  // 其他字段...
}
`;

// 解析 JSON 字符串
try {
  const jsonObject = JSON.parse(jsonString);
  console.log(jsonObject);
} catch (error) {
  console.error("Error parsing JSON string:", error.message);
}

可能的原因及解决方法

  1. 字符串中的换行和空格: 确保字符串中的换行和空格没有问题。可以在生成 JSON 字符串之前使用 JSON.stringify() 来确保格式正确。

    const obj = {
      "_id": "510765614cbf920479be4db6",
      "article_id": 59276,
      ...
    };
    
    const jsonString = JSON.stringify(obj, null, 2); // 使用缩进格式化
    
  2. 特殊字符或转义字符: 检查 JSON 字符串中是否包含任何非预期的字符或转义字符,例如 \'\n

  3. 对象引用问题: 如果你直接传递了一个 JavaScript 对象而不是 JSON 字符串给 JSON.parse(),会报错。确保传递的是字符串类型。

    const jsonString = JSON.stringify(yourObject);
    JSON.parse(jsonString);
    

如果以上方法都无法解决问题,请检查你的输入源,确保它返回的是一个合法的 JSON 字符串。

回到顶部