【问题标题】:SyntaxError: Unexpected Number (JSON.parse)SyntaxError: Unexpected Number (JSON.parse)
【发布时间】:2012-12-03 02:04:36
【问题描述】:

我的 JSON 字符串,

JSON.parse('{"start_date_time": ["2012-12-05 04:45:42.135000", "None"], "terminal_no": ["T1081", "None"], "master_doc_no": ["100008", "100008"], "notes": ["", ""], "doc_no": ["1000018", "1000019"], "location_code": ["1005", "1005"], "end_date_time": ["2012-12-05 05:27:04.529000", "None"], "doc_status": ["CC Ended", "Draft"], "bc_list": ["[{\"465\":\"85\"},{\"306\":\"6\"},{\"306\":\"47\"},{\"306\":\"366\"},{\"306\":\"634\"}]", "[{\"257\":\"14\"}]"]}')

但它的抛出 SyntaxError: Unexpected Number

我哪里错了?

【问题讨论】:

  • 使用 JSONLint 验证就好了:jsonlint.com 是否有更多关于错误的信息?
  • @HunterMcMillen,肯定会发生错误。把它扔到你的浏览器控制台中。它与bc_list 数据有关。

标签: javascript json parsing


【解决方案1】:

这通常意味着您在计算中缺少一个运算符,或者有一个非法的运算符。

例如:

var a = 1000 * 1000; // correct
var b = 1000 1000;   // incorrect
var c = 1234;        // correct
var d = 1,234;       // incorrect

vars b 和 d 将导致:

Uncaught SyntaxError: Unexpected number

【讨论】:

    【解决方案2】:

    您可以先将其简化为问题发生的位置,bc_list...

    JSON.parse('{"bc_list": ["", "{\"257\":\"14\"}]"]}')
    

    问题是您的反斜杠被考虑用于JSON.parse() 上的外部引号而不是内部数据。您还必须转义反斜杠。

    JSON.parse('{"bc_list": ["", "{\\"257\\":\\"14\\"}]"]}')
    

    你的整行固定变成:

    JSON.parse('{"start_date_time": ["2012-12-05 04:45:42.135000", "None"], "terminal_no": ["T1081", "None"], "master_doc_no": ["100008", "100008"], "notes": ["", ""], "doc_no": ["1000018", "1000019"], "location_code": ["1005", "1005"], "end_date_time": ["2012-12-05 05:27:04.529000", "None"], "doc_status": ["CC Ended", "Draft"], "bc_list": ["[{\\"465\\":\\"85\\"},{\\"306\\":\\"6\\"},{\\"306\\":\\"47\\"},{\\"306\\":\\"366\\"},{\\"306\\":\\"634\\"}]", "[{\\"257\\":\\"14\\"}]"]}')
    

    不要在 JSON 数据的字符串中使用 JSON 数据。真是一团糟。

    【讨论】:

      猜你喜欢
      • 2015-07-01
      • 1970-01-01
      • 2013-12-21
      • 2016-07-25
      • 1970-01-01
      • 2013-10-14
      • 2013-09-29
      • 1970-01-01
      • 2021-09-30
      相关资源
      最近更新 更多