SyntaxError:意外的数字(JSON.parse)

时间:2012-12-15 04:46:48

标签: javascript json parsing

我的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:意外数字

我在哪里错了?

2 个答案:

答案 0 :(得分:4)

您可以从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数据。这是一团糟。

答案 1 :(得分:0)

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

例如:

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