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

做了一个 java2json 的小工具

  •  
  •   barantt01 · 4 天前 · 1442 次点击

    天天写设计文档

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

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

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

    佬们看看,给点意见~🫶

    java2json

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

    再次感谢你的意见
    barantt01
        25
    barantt01  
    OP
       2 天前
    @wuhunyu 关于这里第二点提到的 transient 这类情况,是属于序列化的问题。我这个工具本意还是根据实体类生成对应的 json 示例。不过利用 jackson 做入参映射这种情况确实是可以兼容的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2732 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 09:13 · PVG 17:13 · LAX 01:13 · JFK 04:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.