V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
moverinfo
V2EX  ›  程序员

发现大多数的 Java 项目, JSON 已经是一个十分常用的格式。写了一个十分精简的解析器。

  •  
  •   moverinfo · 12 小时 19 分钟前 via iPhone · 4332 次点击

    本想设计的复杂一点,但是,我觉得满足低于 20K 大小的 JSON 串,基本就足够了。另外,大的 JSON 十分少见,哪怕出现这种情况,这个库的性能也还不错。所以,根本没必要搞一个十分巨大的解析器。

    https://github.com/tinystruct/tinystruct/blob/master/src/main/java/org/tinystruct/data/component/Builder.java

    31 条回复    2025-09-09 19:17:09 +08:00
    bobox
        1
    bobox  
       12 小时 12 分钟前
    json 反序列化可不是闹着玩的,稍不小心就是远程漏洞。
    stinkytofux
        2
    stinkytofux  
       12 小时 10 分钟前
    阿里的 FastJson 都迭代过多少版本了, 曾经爆出了无数的高危漏洞, 这玩意可不是那么好写的, 性能得排在安全后面.
    werls
        3
    werls  
       12 小时 10 分钟前   ❤️ 1
    为什么不用 Gson ,还有发错节点了,应该放在推广节点。
    wxw752
        4
    wxw752  
       12 小时 1 分钟前
    都用 Java 了,我还怕包大吗
    HuKing
        5
    HuKing  
       12 小时 0 分钟前
    FastJson2 已经很好用了
    chendy
        6
    chendy  
       11 小时 48 分钟前   ❤️ 12
    看得出来楼主很想推广 tinystruct ,但是我们写 Java 的最不缺的就是这类东西
    好不好,可能好
    用不用,不可能用
    wangtian2020
        7
    wangtian2020  
       11 小时 40 分钟前   ❤️ 1
    每次看到这种东西只会让我觉得 2025 年了 Java 基础设施还没建好
    y1y1
        8
    y1y1  
       11 小时 37 分钟前
    今夕是何年
    spike0100
        9
    spike0100  
       11 小时 36 分钟前
    fastjson 、jackson 包那么大是有原因的。
    NotFoundEgg
        10
    NotFoundEgg  
       11 小时 32 分钟前
    json 这种真没人敢乱用,我们之前用了几年 fastjson ,最近改成了 jackson ,改得吐血
    layxy
        11
    layxy  
       11 小时 32 分钟前
    目前主流应该是 jackson,国内 fastjson 比较多一些,只不过 fastjson 漏洞太多了, fastjson2 个人项目使用了,但是公司现在不推荐使用 fastjson 了,我感觉 fastjson 的使用方式更方便一些
    twofox
        12
    twofox  
       11 小时 29 分钟前
    我放着 jackjson 不用是为了什么呢
    a1274598858
        13
    a1274598858  
       11 小时 13 分钟前
    @twofox #12 没苦硬吃😂
    happypy1
        14
    happypy1  
       11 小时 13 分钟前
    2025 年了,还有人在重复造 json 反序列化的轮子?
    0312birdzhang
        15
    0312birdzhang  
       10 小时 57 分钟前
    Java 世纪难题之——json 反序列化
    dajj
        16
    dajj  
       10 小时 56 分钟前
    json 用 Gson 就好了, 完美
    hwdq0012
        17
    hwdq0012  
       10 小时 54 分钟前
    @bobox #1 还是 c++ 静态反射 json 好
    zficode
        18
    zficode  
       10 小时 50 分钟前
    大聪明
    fors
        19
    fors  
       10 小时 26 分钟前
    HojiOShi
        20
    HojiOShi  
       10 小时 14 分钟前   ❤️ 1
    @chendy #6 我看 lz 上一个帖子我就想吐槽了,2025 年还在出 java web 框架是怎么想的?如果放在十年前,还可以像 jfinal 那样吃一下 spring 留下的剩饭。
    mystical
        21
    mystical  
       10 小时 13 分钟前
    练练手挺好的。真正项目上,还是用现成的吧,这玩意坑确实多。

    另外,fastjson 是不是使用了太内核的东西,一个 json 序列化怎么这么多恐怖的漏洞(没看过远吗,也很少用。个人用 Gson 多)
    @bobox
    @layxy
    4ra1n
        22
    4ra1n  
       10 小时 9 分钟前
    fastjson 有漏洞是因为反序列化太自由了,拓展性太强了

    如果,你只允许,json 反序列化到 hashmap arraylist 自己从 hashmap 里一个个的 get k/v 设置 entity 属性,没有漏洞。fastjson 是允许自动反序列化到指定的 entity/pojo 类,而不是从 hashmap 手动搞过去,自动导致的漏洞。

    漏洞的核心是,自动类型推断和实例化,自动调用 getter/setter
    cheng6563
        23
    cheng6563  
       9 小时 53 分钟前
    @mystical 主要就是自动类型推断,比如把类型用"@type"直接写到字段上
    macaodoll
        24
    macaodoll  
       9 小时 45 分钟前
    LocalDateTime 这些处理好了吗
    dog82
        25
    dog82  
       9 小时 36 分钟前
    xml 表达能力那么强,为啥被 json 偷家了,简直就是劣币驱逐良币
    jiazhutianxiadiy
        26
    jiazhutianxiadiy  
       8 小时 58 分钟前 via Android
    @dog82 不知道好在什么地方。你可以列出下
    chendy
        27
    chendy  
       6 小时 43 分钟前
    @dog82 因为表达能力过于强了,平时根本不需要这么复杂的东西,JSON 主要赢在一个简单
    CodeCodeStudy
        28
    CodeCodeStudy  
       6 小时 8 分钟前
    为什么 javascript ,php 一个函数就搞定 json 了,是因为他们是动态语言吗
    aarontian
        29
    aarontian  
       2 小时 49 分钟前
    @dog82 xml 冗余太多了,一个简单的对象编码出来巨大无比,解析慢,可读性差。除了表达能力强以外几乎一无是处。至于需要它表达能力的场景,用就是了。

    我最喜欢 yaml ,比起嵌 json 的各种转义,可读性太好了,就是解析性能好像弱点,作为配置文件无可替代
    cobbage
        30
    cobbage  
       2 小时 8 分钟前 via Android
    @dog82 简单。之前看了一个视频说 xml 之前是官方推荐的正统。但是我感觉 xml 还是有用武之地的,也不知道是软件老的原因,页面傻瓜式布局的;数据传输基本没了。
    moverinfo
        31
    moverinfo  
    OP
       1 小时 53 分钟前 via iPhone
    感谢各位的 comments ,我认为没有对错,也没有敌意,喜欢这样的氛围。我准备另开一贴把我设计这个框架的历史分享给大家,这样或许你们可以看到它的不同之处。V2ex 是个不错的论坛,这里大家可以自由表达自己的想法,非常好!
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2985 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 13:11 · PVG 21:11 · LAX 06:11 · JFK 09:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.