【问题标题】:valid json string but cannot parse有效的 json 字符串但无法解析
【发布时间】:2019-12-11 17:25:46
【问题描述】:

我的环境是nodejs

let z = await x.text();
console.log(z)
let y = JSON.parse(z)

控制台日志是

{
   "errorCode":0,
   "errorMsg":"success",
   "result":{
      "msg":"\u4e70\u5bb6\u5df2",
      "uid":"104",
      "username":"\u738b\u626d",
      "userphone":"1565777778",
      "address":"\u4e0a\u6d77",
      "price":"5.00",
      "trade_state":"TRADE_SUCCESS",
      "hk_orderid":"1575524694820"
   }
}

(node:21) UnhandledPromiseRejectionWarning: SyntaxError: Unexpected 位置 0 处的 JSON 中的标记

当我复制 json 字符串并将其粘贴到

JSON.parse('{"errorCode":0,"errorMsg":"success","result":{"msg":"\u4e70\u5bb6\u5df2","uid":"104","username":"\u738b\u626d","userphone":"1565777778","address":"\u4e0a\u6d77","price":"5.00","trade_state":"TRADE_SUCCESS","hk_orderid":"1575524694820"}}')

在浏览器控制台内

解析正确

编辑:有人问json,实际上json正是我上面粘贴的

{
   "errorCode":0,
   "errorMsg":"success",
   "result":{
      "msg":"\u4e70\u5bb6\u5df2",
      "uid":"104",
      "username":"\u738b\u626d",
      "userphone":"1565777778",
      "address":"\u4e0a\u6d77",
      "price":"5.00",
      "trade_state":"TRADE_SUCCESS",
      "hk_orderid":"1575524694820"
   }
}

这也是console.log(z)的输出

下面是一些进一步的日志,注意只有最后一个有异常

processing job id 19121211173822287103

12/12/2019 12:17:45 PM {"errorCode":0,"errorMsg":"success","result":{"msg":"\u7b49\u5f85\u8cb7\u5bb6\u4ed8\u6b3e","uid":"103","username":"\u674e\u767d","userphone":"18912345678","address":"\u7ef4\u4e5f\u7eb3\u9152\u5e97(\u77f3\u82b1\u897f\u8def\u5e97)","price":"4.00","trade_state":"WAIT_BUYER_PAY","hk_orderid":"1576120657890"}}

12/12/2019 12:17:50 PM processing job id 19121211173822287103

12/12/2019 12:17:50 PM {"errorCode":0,"errorMsg":"success","result":{"msg":"\u7b49\u5f85\u8cb7\u5bb6\u4ed8\u6b3e","uid":"103","username":"\u674e\u767d","userphone":"18912345678","address":"\u7ef4\u4e5f\u7eb3\u9152\u5e97(\u77f3\u82b1\u897f\u8def\u5e97)","price":"4.00","trade_state":"WAIT_BUYER_PAY","hk_orderid":"1576120657890"}}

12/12/2019 12:17:55 PM processing job id 19121211173822287103

12/12/2019 12:17:57 PM

12/12/2019 12:17:57 PM {"errorCode":0,"errorMsg":"success","result":{"msg":"\u4e70\u5bb6\u5df2\u652f\u4ed8","uid":"103","username":"\u674e\u767d","userphone":"18912345678","address":"\u7ef4\u4e5f\u7eb3\u9152\u5e97(\u77f3\u82b1\u897f\u8def\u5e97)","price":"4.00","trade_state":"TRADE_SUCCESS","hk_orderid":"1576120657890"}}

12/12/2019 12:17:57 PM (node:21) UnhandledPromiseRejectionWarning: SyntaxError: Unexpected token  in JSON at position 0

12/12/2019 12:17:57 PM at JSON.parse (<anonymous>)

12/12/2019 12:17:57 PM at /usr/src/app/routes/notify.js:39:26

【问题讨论】:

  • 你能粘贴console.log(z)的结果吗
  • stackoverflow.com/a/20392392/8813684 检查它是否是 json,然后如果抛出任何异常,则从这里返回到 API 的响应。
  • @NareshKumar 上面粘贴了 console.log(z) 的结果:
  • 它是有效的 json {"errorCode":0,"errorMsg":"success","re​​sult":{"msg":"\u4e70\u5bb6\u5df2","uid":" 104","username":"\u738b\u626d","userphone":"1565777778","address":"\u4e0a\u6d77","price":"5.00","trade_state":"TRADE_SUCCESS"," hk_orderid":"1575524694820"}}
  • 你能告诉我x到底是​​什么吗?为什么你在 await 中使用 .text?

标签: javascript node.js json utf-8 chinese-locale


【解决方案1】:

可能需要查看更多代码,因此如果您从服务器/url 中提取 JSON,请确保响应标头显示为 JSON 数据类型

【讨论】:

  • 我没有直接从服务器中提取,我将其读取为字符串,请参阅 let z = await x.text
猜你喜欢
  • 1970-01-01
  • 2013-05-10
  • 2023-04-10
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
  • 2011-08-22
  • 2022-08-18
  • 2019-05-31
相关资源
最近更新 更多