查看原文
其他

JSON转Java POJO就是这么简单快捷

请关注 码农小胖哥 2021-05-26

1. 前言

作为一名 Java 后端程序员经常会有封装一些调用第三方接口的实际需求。比如胖哥最近对微信支付 V3 的封装。

https://github.com/NotFound403/payment-spring-boot
欢迎 star 哦。

大家都明白第三方接口的参数返回值都是提供方定义好的,我们封装时需要生成自己的POJO类。这种工作没有技术含量不说,还耗时耗力。就拿微信支付新出的商家券参数来举例:

{
  "stock_name":"8月1日活动券",
  "belong_merchant":"10000098",
  "comment""活动使用",
  "goods_name""填写代金券可适用的商品或服务",
  "stock_type""NORMAL",
  "coupon_use_rule": {
    "coupon_available_time": {
      "available_begin_time""2015-05-20T13:29:35+08:00",
      "available_end_time""2015-05-20T13:29:35+08:00",
      "available_day_after_receive"3,
      "wait_days_after_receive":7,
      "available_week": {
        "week_day": [
          1,
          2
        ],
        "available_day_time": [
          {
            "begin_time"3600,
            "end_time"86399
          }
        ]
      },
      "irregulary_avaliable_time": [
        {
          "begin_time""2015-05-20T13:29:35+08:00",
          "end_time""2015-05-20T13:29:35+08:00"
        }
      ]
    },
    "fixed_normal_coupon": {
      "discount_amount"5,
      "transaction_minimum"100
    },
    "discount_coupon": {
      "discount_percent"88,
      "transaction_minimum":100
    },
    "exchange_coupon":{
      "exchange_price":100,
      "transaction_minimum":100
    },
    "use_method""OFF_LINE",
    "mini_programs_appid":"wx23232232323",
    "mini_programs_path":"/path/index/index"
  },
  "stock_send_rule": {
    "max_coupons"100,
    "max_coupons_per_user"5,
    "max_coupons_by_day"100,
    "natural_person_limit""false",
    "prevent_api_abuse""false",
    "transferable""false",
    "shareable""false"
  },
  "out_request_no""100002322019090134234sfdf",
  "custom_entrance": {
    "mini_programs_info": {
      "mini_programs_appid""wx234545656765876",
      "mini_programs_path""/path/index/index",
      "entrance_words""欢迎选购",
      "guiding_words""获取更多优惠"
    },
    "appid""wx324345hgfhfghfg",
    "hall_id""233455656",
    "store_id""233554655"
  },
  "display_pattern_info": {
    "description""xxx门店可用",
    "merchant_logo_url""https://xxx",
    "merchant_name""微信支付",
    "background_color""xxxxx",
    "coupon_image_url""图片cdn地址"
  },
  "coupon_code_mode""WECHATPAY_MODE"
}

是不是又臭又长?严重降低了写代码的乐趣,胖哥在手写了几个后都有放弃的冲动了。

2. JSON 转 POJO 工具

我需要搞一个 JSON 转 POJO 工具来干这个活。我就在网上找了找,终于找到了一款可以将JSON转换为POJO的 IDE 插件。我在Intellij IDEA的插件市场中尝试了好几种提供该功能的插件后,一款名叫RoboPOJOGenerator的转换工具最终被选中,确实用着不错,减少了这种重复、无聊的劳动,今天就分享给大家。

3. RoboPOJOGenerator

RoboPOJOGenerator是一款 JSON 转成 POJO 的 IDEA 插件,它支持将 JSON 转换为 Java 或者 Kotlin 两种语言的 POJO。同时它还支持 GSON, FastJSON, AutoValue (GSON), Logan Square, Jackson 这些 JSON 框架,方便你序列化和反序列化。

演示
操作界面说明

对应生成的类是这样的:

package cn.felord.payment.wechat.v3.model.busifavor;

import com.fasterxml.jackson.annotation.JsonProperty;

public class Felord{

 @JsonProperty("name")
 private String name;

 @JsonProperty("blog")
 private String blog;
}

这只是一个简单的演示,你自己可以找个复杂的例子试试。

3. 总结

有人说不建议使用工具,我认为这是错误的。人类最大的优点就是使用工具。写这些没有实质逻辑的代码并不能提高一个程序员的编码水平。真正能提高水平的是对逻辑过程、逻辑对象的归纳和抽象,如何让逻辑层次化,清晰而有序。好了今天的分享就到这里,我是:码农小胖哥,多多关注,分享更多编程干货。

被神化的“高并发编程”,其实可以有多简单?

2021-01-15

IntelliJ IDEA启动画面的秘密:当编程遇到艺术

2021-01-13

Spring Boot 2.0 的配置绑定类Bindable居然如此强大

2021-01-11

开发文件上传功能稍不注意就会引发安全漏洞

2021-01-14

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存