V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhongrs232
V2EX  ›  程序员

被 json 最后一个逗号坑了, fk

  •  
  •   zhongrs232 · 2020-07-18 10:23:58 +08:00 · 3719 次点击
    这是一个创建于 1371 天前的主题,其中的信息可能已经有所发展或是发生改变。

    cjson 可以解析尾随逗号,jsoncpp 不可以,parse()只返回第一个元素,蛋疼

    10 条回复    2020-07-18 21:17:54 +08:00
    vk42
        1
    vk42  
       2020-07-18 10:27:09 +08:00   ❤️ 2
    标准明确规定不允许 trailing comma,所以不是逗号坑的你,是写了逗号的人坑的你
    ysc3839
        2
    ysc3839  
       2020-07-18 10:31:52 +08:00 via Android
    没记错的话 jsoncpp 是可以配置接受这种格式的,甚至还能解析注释,是解析注释而不是忽略注释,可以保留注释重新生成 JSON 。
    zhongrs232
        3
    zhongrs232  
    OP
       2020-07-18 10:45:43 +08:00
    主要是一个项目里同时用到了 cjson 和 jsoncpp,然后就被搞糊涂了
    opengps
        4
    opengps  
       2020-07-18 10:57:20 +08:00
    cjson 的过度善意让你误解了 json
    Vegetable
        5
    Vegetable  
       2020-07-18 11:06:39 +08:00
    比较严肃的库一半不会允许,但是有一些库会考虑这些事情,vscode 他们还专门弄了 JSON with comment,用其他库解析 vscode 的配置文件就被坑过,最后只能换成微软自己的 https://github.com/microsoft/node-jsonc-parser
    xwhxbg
        6
    xwhxbg  
       2020-07-18 11:58:26 +08:00
    cjson 不是标准 json 吧
    Jirajine
        7
    Jirajine  
       2020-07-18 12:43:39 +08:00 via Android   ❤️ 1
    json 只当数据交换格式(或者 protobuf ),绝对不要用作配置文件或其他可能需要手写的场景,不能注释、不能 trailing comma 太过恶心,需要手写的场景一律改用 yaml
    lovecy
        8
    lovecy  
       2020-07-18 17:05:52 +08:00
    WEB 开发日常了
    Umenezumi
        9
    Umenezumi  
       2020-07-18 17:46:21 +08:00
    用 JSON 就一定要按照标准来
    youxiachai
        10
    youxiachai  
       2020-07-18 21:17:54 +08:00
    这就是没读标准文档,猛干的典范。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   928 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:59 · PVG 03:59 · LAX 12:59 · JFK 15:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.