使用JSON.parse()解析json会引发错误

时间:2014-10-21 23:23:46

标签: javascript json parsing

我有一个从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

4 个答案:

答案 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'

希望这有帮助。