添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Java中Json转pojo及处理json的几个插件

Java中Json转pojo及处理json的几个插件

1 年前 · 来自专栏 终端研发部

1. 前言

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

大家都明白第三方接口的 参数 返回值 都是提供方定义好的,我们封装时需要生成自己的 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": [
        "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;
}

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

JSON 是一种数据格式,具有多种数据类型,例如字符串、布尔值、列表、数字、对象等......它是用于服务之间交互的流行、最简单和轻量级的格式之一。在这篇博文中,我将列出 10 种 JSON 工具,它们有助于以更好、更简单的方式改进解析、格式化和可视化 JSON。

4、JSON 格式化程序

JsonFormatter功能:

  • 格式化/美化JSON
  • 验证 JSON
  • 缩小 JSON
  • 将 JSON 转换为 XML、YAML、CSV

5、JSONLint

JSONLint是 JSON 的验证器和重新格式化程序。我们可以复制和粘贴,也可以直接在编辑器中输入 URL,让 JSONLint 验证我们凌乱的 JSON 代码。

6、JSONView Chrome 插件

JSONView是一个 Chrome 插件,它提供 JSON 支持、语法高亮、可折叠树、缩进指南、可点击 URL、在原始和解析的 JSON 之间切换等功能。

7、JSON 转 POJO

JSON2CSHARP是另一个很酷的在线工具,可帮助将 JSON 转换为 C# 或 Java 类。这个工具可以大大节省您生成类以映射和解析 JSON 字段的时间。

8、任何编程语言中的 JSON 到 POJO

Quicktype是另一个出色的在线工具,可帮助将 JSON 转换为以下任何一种编程语言中的类/结构。它支持

  • go
  • java
  • Python
  • Ruby
  • Swift
  • Objective-C 等等...

9、JSON Pretty Printer

JSON Pretty Printer实用程序以清晰的缩进格式打印 JSON 数据。它为习惯于命令行的人提供了最大的好处。该工具对于构建或使用基于 JSON 的 API 的开发人员非常有用。

curl http://api.plos.org/search\?q\=title:%22Drosophila%22%20and%20body:%22RNA%22\&fl\=id\&start\=1\&rows\=3 | json_pp

响应看起来像

{
   "response" : {
      "numFound" : 1400,
      "docs" : [
            "id" : "10.1371/journal.pone.0188133"
            "id" : "10.1371/journal.pbio.1000320"