likes
comments
collection
share

复杂Json如何快速转成Java类,让你有更多时间摸鱼

作者站长头像
站长
· 阅读数 23

复杂Json如何快速转成Java类,让你有更多时间摸鱼

1. 前言

复杂Json如何快速转成Java类,让你有更多时间摸鱼

投票传送门

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

大家都明白第三方接口的参数返回值都是提供方定义好的,我们封装时需要生成自己的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"
        }
      ]
    },
  "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框架,方便你序列化和反序列化。

复杂Json如何快速转成Java类,让你有更多时间摸鱼

复杂Json如何快速转成Java类,让你有更多时间摸鱼

对应生成的类是这样的:

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. 总结

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