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

做了一个 java2json 的小工具

  •  
  •   barantt01 319 天前 2446 次点击
    这是一个创建于 319 天前的主题,其中的信息可能已经有所发展或是发生改变。

    天天写设计文档

    还要求接口文档都写好,大接口的入参出参写的我头大。

    一个实体类定义出来之后,还要再敲一遍对应的 json 示例。然后就有了做一个小工具的想法。

    功能很简单,就是输入 java 实体类,然后生成对于的 json 示例。

    佬们看看,给点意见~

    java2json

    25 条回复    2024-11-29 01:43:10 +08:00
    i4color
        1
    i4color  
       319 天前
    这个不是 swagger 的用途吗
    summerLast
        2
    summerLast  
       319 天前
    页面还不错,为什么不做成 idea 插件呢
    rlds
        3
    rlds  
       319 天前
    idea 里面已经有现成的工具了,直接右键就能复制成 json 文本
    https://plugins.jetbrains.com/plugin/13606-copy-as-json
    rlds
        4
    rlds  
       319 天前
    @summerLast 已经有这样的工具了
    4xxx
        5
    4xxx  
       319 天前
    建议再来个 json2java
    xxss0903
        6
    xxss0903  
       319 天前
    界面做的好看
    rb6221
        7
    rb6221  
       319 天前
    考虑搞一个 AI 生成更逼真的 mock 结果吗
    edwardzcn98
        8
    edwardzcn98  
       319 天前
    页面可以啊
    hidemyself
        9
    hidemyself  
       319 天前
    我都是 cv 给 GPT ,又快又好
    summerLast
        10
    summerLast  
       319 天前
    @rlds #4 嗯嗯,有在用,后面是打算做个工具大全?
    X2S2
        11
    X2S2  
       319 天前
    @4xxx Gsonfomater/GsonfomaterR 就可以呀。
    hbcolorful
        12
    hbcolorful  
       319 天前
    我在用 apifox 也挺不错,也能自动 mock 参数值
    importmeta
        13
    importmeta  
       319 天前
    @janus77 https://fakerjs.dev/ 这个不够吗
    barantt01
        14
    barantt01  
    OP
       319 天前
    @summerLast 在计划当中
    barantt01
        15
    barantt01  
    OP
       319 天前
    @janus77 我最开始考虑的就是全部用 AI 去做的, 但是响应太慢了,这个本来就是一个很简单的小工具,速度要是慢的话就不怎么实用了
    barantt01
        16
    barantt01  
    OP
       319 天前
    @hbcolorful 确实挺不错的,但是用法不太一样,我们公司在设计阶段就要求给出详细的接口文档,这种时候一般都是建好表了,有对应的实体类了,然后这个工具主要就是根据这个实体类去生成一个 json 的示例填到接口文档里面去。
    barantt01
        17
    barantt01  
    OP
       319 天前
    @i4color swagger 也有在用,但那已经是接口写完之后才有的了,我现在的点就是设计阶段就需要写接口文档。
    barantt01
        18
    barantt01  
    OP
       319 天前
    @rlds 太酷啦,我之前没在插件商店里面找,都是从搜索引擎里面找的,但是功能都是相反的
    barantt01
        19
    barantt01  
    OP
       319 天前
    @xxss0903 感谢认可,但这都是 cursor 帮我完成的
    barantt01
        20
    barantt01  
    OP
       319 天前
    @hidemyself 我试过用 gpt 去实现这个功能,但是接口响应太慢了~
    NoKey
        21
    NoKey  
       318 天前
    idea 里面有很多插件干这个啊,vscode 有类似的不?不用贴到网页上搞吧
    barantt01
        22
    barantt01  
    OP
       318 天前
    @NoKey 确实是这样。我搜的时候可能没收对关键词,导致我没找到,然后就自己动手搞了一个
    wuhunyu
        23
    wuhunyu  
       318 天前   1
    看样子是纯前端的工具,不过就像是网友们说的,idea 中已经有满足你需求的插件了,甚至还少一次复制类的动作。不过还是提几个可优化的点
    1. 给出的 json 输出中,未适配的数据类型不能给出正确的值。基本的 Long ,Integer 得做一下适配吧,我不信作者的类中没用到的基本数据类型的包装类
    2. 静态字段也输出在 json 中。对象实例在序列化后不会包含静态属性。其他的比较少见的 transient ,以及 jackson 的 @JsonIgnore 都没有做忽略
    3. 无法读取类的上下文依赖情况。试想一下这种情况,一个用户类中,有拥有的角色类属性,所属部门类属性等等,在这个工具中,如果要被正确识别角色属性和部门属性,要把用户类,角色类和部门类都复制出来,才能生成正确的 json 输出。这个场景应该是比较常见的。如果是在 idea 的插件中,可以读取到项目的上下文环境。但在作者的这个工具中,需要使用者把这些类都复制出来才行。这是一个硬伤
    barantt01
        24
    barantt01  
    OP
       318 天前
    @wuhunyu 非常感谢你认真的回复!
    1: 这个确实是遗漏了,初心漏了包装类型
    2: 这个可以做支持
    3: 这种情况暂时没法解决。如你所说,这是一个前端工具,只是针对 java 代码做文本解析,没法做到像 idea 插件那样能获取到上下文环境。

    再次感谢你的意见
    barantt01
        25
    barantt01  
    OP
       318 天前
    @wuhunyu 关于这里第二点提到的 transient 这类情况,是属于序列化的问题。我这个工具本意还是根据实体类生成对应的 json 示例。不过利用 jackson 做入参映射这种情况确实是可以兼容的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3104 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 00:35 PVG 08:35 LAX 17:35 JFK 20:35
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86