我有一个从decodeURIComponent()函数解码的大json字符串。现在我尝试使用JSON.parse()函数将此字符串解析为Json对象。当我运行时,它会显示'意外的语法标记m'。我有两个疑问 1.是否有更好的工具来获取语法更正,因为它是一个大字符串。 2.当我在此网址“http://jsonviewer.stack.hu”中提供相同的json字符串进行验证时,我将获得有效的json对象..这是怎么回事。
我在第2点获得的有效json对象是我在程序中需要的。请给我一些如何解决这个问题的建议。
这是我的json字符串:https://drive.google.com/file/d/0Bz0478Hh7tBqS0pXUTBMTVFPZzA/view?usp=sharing
答案 0 :(得分:0)
我个人使用npm包jsonlint
来验证大型JSON文件。
npm install -g jsonlint
用法非常简单,它会准确地告诉您JSON违规存在的位置。
Usage: jsonlint [file] [options]
file file to parse; otherwise uses stdin
Options:
-v, --version print version and exit
-s, --sort-keys sort object keys
-i, --in-place overwrite the file
-t CHAR, --indent CHAR character(s) to use for indentation [ ]
-c, --compact compact error display
-V, --validate a JSON schema to use for validation
-e, --environment which specification of JSON Schema the validation
file uses [json-schema-draft-03]
-q, --quiet do not print the parsed json to STDOUT [false]
-p, --pretty-print force pretty printing even if invalid
答案 1 :(得分:0)
' m'抱怨是第一个角色。您需要在开头删除mandrill_events=
部分才能使其成为有效的JSON。
答案 2 :(得分:0)
mandrill_events=
正在打破JSON.parse(...)
。删除它。
答案 3 :(得分:0)
回答关于该工具的问题,我喜欢这个。
http://www.jsoneditoronline.org/
只需粘贴您的JSON并按向右箭头即可。我在两个方向工作,你也可以在右边编辑JSON。
如果您的JSON对象出现问题,它会告诉您确切的位置。它使用引擎盖下的jsonlint。
在您的情况下,问题可能是其他答案所说的初始变量赋值,因为这不是有效的JSON。你需要删除它,只留下数组。 JSON编辑器在线会抛出此错误,这更具描述性。
Error: Parse error on line 1:
mandrill_events=[{"e
^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got 'undefined'
希望这有帮助。