V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
isy
V2EX  ›  问与答

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

  •  
  •   isy · 2014-02-27 22:23:31 +08:00 · 3437 次点击
    这是一个创建于 3956 天前的主题,其中的信息可能已经有所发展或是发生改变。
    好吃力,多个双引号都解码不了。
    13 条回复    1970-01-01 08:00:00 +08:00
    Livid
        1
    Livid  
    MOD
       2014-02-27 22:31:59 +08:00
    https://addons.mozilla.org/en-us/firefox/addon/jsonview/

    试试装这个插件,然后把 JSON 文件拖进浏览器。
    isy
        2
    isy  
    OP
       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
        3
    icedx  
       2014-02-28 00:30:06 +08:00   ❤️ 2
    @isy

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

    @Livid @rankjie @yangqi @zhujinliang 真心的,这个方法最好。
    icedx
        9
    icedx  
       2014-02-28 22:58:36 +08:00
    @isy 我给你了两种方法 你说的是哪一种
    isy
        10
    isy  
    OP
       2014-02-28 23:05:37 +08:00   ❤️ 1
    @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
        11
    icedx  
       2014-02-28 23:08:09 +08:00
    @isy 是少了点 最坏的情况只会返回一个文件头
    但是第二个就能准确的标出错误的位置这样
    找出来了就好了嘛^_^
    isy
        12
    isy  
    OP
       2014-02-28 23:19:50 +08:00   ❤️ 1
    @icedx 噢?第二个更好吗?晚点试试第二个
    icedx
        13
    icedx  
       2014-02-28 23:21:21 +08:00
    @isy 是能准确的标出错误的位置 错误就在标志的上方
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2798 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 06:58 · PVG 14:58 · LAX 22:58 · JFK 01:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.