【问题标题】:Issue parsing JSON string containing dates解析包含日期的 JSON 字符串的问题
【发布时间】:2016-04-12 14:19:33
【问题描述】:

我正在尝试将字符串解析为 json。我收到了来自服务器的字符串,但我总是收到意外令牌 e 的错误

var data = JSON.parse(result)

结果是

{"success":true,"data":[{"carID":100110,"teamID":0,"carNO":"carNO1","simNO":"1212","machineNO":"800704","controlPassword":null,"machineType":null,"protocol":7,"routeway":0,"carType":null,"carBrand":null,"carColor":null,"installPlace":"7","installPerson":null,"businessPerson":null,"joinTime":new UtcDate(1460357844353),"overServiceTime":new UtcDate(1491840000000),"carRemark":null,"driver":null,"driverTel":null,"driverMobile":null,"driver2":null,"driver2Tel":null,"driver2Mobile":null,"password":null,"driverAddress":null,"driverFax":null,"driverCompany":null,"buyTime":null,"stoped":0,"specialRequest":"0","driverRemark":null,"regionAlarm":0,"regionID":0,"positionID":0,"notify":0,"notifyStart":new UtcDate(1460357844353),"notifyEnd":new UtcDate(1460357844353),"notifyText":null,"f_username":null,"isonline":0,"IfSendAlarmEmail":false,"AlarmEmail":null},{"carID":100111,"teamID":0,"carNO":"carNO2 TEst","simNO":"23","machineNO":"13000000005","controlPassword":null,"machineType":null,"protocol":7,"routeway":0,"carType":null,"carBrand":null,"carColor":null,"installPlace":"7","installPerson":null,"businessPerson":null,"joinTime":new UtcDate(1460358033120),"overServiceTime":new UtcDate(1491840000000),"carRemark":null,"driver":null,"driverTel":null,"driverMobile":null,"driver2":null,"driver2Tel":null,"driver2Mobile":null,"password":null,"driverAddress":null,"driverFax":null,"driverCompany":null,"buyTime":null,"stoped":0,"specialRequest":"0","driverRemark":null,"regionAlarm":0,"regionID":0,"positionID":0,"notify":0,"notifyStart":new UtcDate(1460358033120),"notifyEnd":new UtcDate(1460358033120),"notifyText":null,"f_username":null,"isonline":0,"IfSendAlarmEmail":false,"AlarmEmail":null}]}    

我在一个在线 jsonparse 上测试过 http://json.parser.online.fr/

它也返回同样的错误。

如果我没记错的话,日期格式错误,但我不能触摸服务器端。我做错了什么?

【问题讨论】:

  • 似乎这是您客户端的问题,我可以在提到的解析器中解析它而不会出现任何错误。
  • 你在使用你不是在试图解析一个对象吗? console.log(typeof result);
  • 在我刚刚创建的在线解析器和测试工具中解析对我来说都很好。
  • 对不起,我粘贴了错误的字符串
  • ""joinTime":new UtcDate(1460357844353)" - 无效的 JSON。所以,这里的服务器是错误的。

标签: javascript arrays json string object


【解决方案1】:

日期显然不是有效的 JSON。但如果您无权访问服务器,则可以使用 Regex 将这些日期转换为常规时间戳:

// Will convert   new UtcDate(1460357844353)      to      1460357844353
var data = JSON.parse( result.replace(/new UtcDate\(([0-9]+)\)/gi, "$1") );

JS Fiddle demo

【讨论】:

  • 这很聪明。谢谢你!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-23
  • 1970-01-01
  • 1970-01-01
  • 2015-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多