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. 总结
有人说不建议使用工具,我认为这是错误的。人类最大的优点就是使用工具。写这些没有实质逻辑的代码并不能提高一个程序员的编码水平。真正能提高水平的是对逻辑过程、逻辑对象的归纳和抽象,如何让逻辑层次化,清晰而有序。