100MB 左右的 json 文件格式有错误,解码不了,怎么排查?

2014-02-27 22:23:31 +08:00
 isy
好吃力,多个双引号都解码不了。
3437 次点击
所在节点    问与答
13 条回复
Livid
2014-02-27 22:31:59 +08:00
https://addons.mozilla.org/en-us/firefox/addon/jsonview/

试试装这个插件,然后把 JSON 文件拖进浏览器。
isy
2014-02-27 22:45:08 +08:00
@Livid 试了下,浏览器显示

There was an error parsing the JSON document. The document may not be well-formed.

遇到错误就不解析了,直接返回原始字符串
icedx
2014-02-28 00:30:06 +08:00
@isy

sudo apt-get install yajl-tools
cat WhatTheFuck.json | json_verify
yangqi
2014-02-28 00:40:43 +08:00
感觉可能是多余的换行或者是编码问题
rankjie
2014-02-28 00:41:05 +08:00
复制粘贴到浏览器调试工具,var a = YourJSON;
然后看报错的地方就是了
icedx
2014-02-28 00:58:16 +08:00
@isy
链接: http://pan.baidu.com/s/1hqBlKxu 密码: s421
zhujinliang
2014-02-28 17:43:31 +08:00
看看规律然后用正则提取,无视json规则
isy
2014-02-28 22:48:12 +08:00
@icedx 如果可以真想给100个赞!这方法既优雅又有效率!!!

@Livid @rankjie @yangqi @zhujinliang 真心的,这个方法最好。
icedx
2014-02-28 22:58:36 +08:00
@isy 我给你了两种方法 你说的是哪一种
isy
2014-02-28 23:05:37 +08:00
@icedx 用的你说的第一种,yajl(https://github.com/lloyd/yajl)。 因为我没在 Windows 环境下,就没试第二种了。感谢!

yajl的缺点是出错地方的上下文还是少了点。


lexical error: invalid string in json text.
3":[{"group":"ARTS"}, {"names
(right here) ------^
JSON is invalid
icedx
2014-02-28 23:08:09 +08:00
@isy 是少了点 最坏的情况只会返回一个文件头
但是第二个就能准确的标出错误的位置这样
找出来了就好了嘛^_^
isy
2014-02-28 23:19:50 +08:00
@icedx 噢?第二个更好吗?晚点试试第二个
icedx
2014-02-28 23:21:21 +08:00
@isy 是能准确的标出错误的位置 错误就在标志的上方

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/102219

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX