2021-10-15

RESTful接口开发(二)


前言

上次说到了Spring Boot框架环境下的RESTful接口开发,其实是很简单的,这种简单的开发也能够返回数据给前端,现在我们再来看一下RESTful接口开发工具,这个工具就类似于codegenerator,可以根据数据类型生成代码,因为我是使用Vscode工具的,所以我利用的其实就是里面提供的插件版qiucktype。今天呢,我们就分享一下如何利用插件版的quicktype将不同类型的json数据生成代码,并且通过response层反馈给前端。


一、怎么操作quicktype?

1.在安装插件版的quicktype后,我们先建立.json格式的文件。
2.键入CTRL + shift + p打开命令栏。
3.输入Open quicktype for JSON。
4.转换

例如

[{"name":"Jeason","sex":"man"},{"name":"Tom","sex":"man"}]

输出代码

package io.quicktype;

import java.util.Map;

public class Code {
    private String name;
    private String sex;

    public String getName() { return name; }
    public void setName(String value) { this.name = value; }

    public String getSex() { return sex; }
    public void setSex(String value) { this.sex = value; }
}

我们可以写一个response工具类,然后返回数据给前端。

二、转换案例

1.复杂List

{
  "users": [
    {
      "userName": "Jon",
      "email": "jon@arbuckle.com",
      "pets": [
        {
          "name": "Garfield",
          "species": "cat"
        },
        {
          "name": "Odie",
          "species": "dog"
        }
      ]
    }
  ]
}
package io.quicktype;

import java.util.Map;

public class Code {
    private User[] users;

    public User[] getUsers() { return users; }
    public void setUsers(User[] value) { this.users = value; }
}

// User.java

package io.quicktype;

import java.util.Map;

public class User {
    private String userName;
    private String email;
    private Pet[] pets;

    public String getUserName() { return userName; }
    public void setUserName(String value) { this.userName = value; }

    public String getEmail() { return email; }
    public void setEmail(String value) { this.email = value; }

    public Pet[] getPets() { return pets; }
    public void setPets(Pet[] value) { this.pets = value; }
}

// Pet.java

package io.quicktype;

import java.util.Map;

public class Pet {
    private String name;
    private String species;

    public String getName() { return name; }
    public void setName(String value) { this.name = value; }

    public String getSpecies() { return species; }
    public void setSpecies(String value) { this.species = value; }
}

2.复杂Map情况

{
    "HeWeather6": [
        {
            "basic": {
                "cid": "CN101010100",
                "location": "北京",
                "parent_city": "北京",
                "admin_area": "北京",
                "cnty": "中国",
                "lat": "39.90498734",
                "lon": "116.40528870",
                "tz": "8.0"
            },
            "daily_forecast": [
                {
                    "cond_code_d": "103",
                    "cond_code_n": "101",
                    "cond_txt_d": "晴间多云",
                    "cond_txt_n": "多云",
                    "date": "2017-10-26",
                    "hum": "57",
                    "pcpn": "0.0",
                    "pop": "0",
                    "pres": "1020",
                    "tmp_max": "16",
                    "tmp_min": "8",
                    "uv_index": "3",
                    "vis": "16",
                    "wind_deg": "0",
                    "wind_dir": "无持续风向",
                    "wind_sc": "微风",
                    "wind_spd": "5"
                },
                {
                    "cond_code_d": "101",
                    "cond_code_n": "501",
                    "cond_txt_d": "多云",
                    "cond_txt_n": "雾",
                    "date": "2017-10-27",
                    "hum": "56",
                    "pcpn": "0.0",
                    "pop": "0",
                    "pres": "1018",
                    "tmp_max": "18",
                    "tmp_min": "9",
                    "uv_index": "3",
                    "vis": "20",
                    "wind_deg": "187",
                    "wind_dir": "南风",
                    "wind_sc": "微风",
                    "wind_spd": "6"
                },
                {
                    "cond_code_d": "101",
                    "cond_code_n": "101",
                    "cond_txt_d": "多云",
                    "cond_txt_n": "多云",
                    "date": "2017-10-28",
                    "hum": "26",
                    "pcpn": "0.0",
                    "pop": "0",
                    "pres": "1029",
                    "tmp_max": "17",
                    "tmp_min": "5",
                    "uv_index": "2",
                    "vis": "20",
                    "wind_deg": "2",
                    "wind_dir": "北风",
                    "wind_sc": "3-4",
                    "wind_spd": "19"
                }
            ],
            "status": "ok",
            "update": {
                "loc": "2017-10-26 23:09",
                "utc": "2017-10-26 15:09"
            }
        }
    ]
}
package io.quicktype;

import java.util.Map;

public class Code {
    private HeWeather6[] heWeather6;

    public HeWeather6[] getHeWeather6() { return heWeather6; }
    public void setHeWeather6(HeWeather6[] value) { this.heWeather6 = value; }
}

// HeWeather6.java

package io.quicktype;

import java.util.Map;

public class HeWeather6 {
    private Basic basic;
    private Map<String, String>[] dailyForecast;
    private String status;
    private Update update;

    public Basic getBasic() { return basic; }
    public void setBasic(Basic value) { this.basic = value; }

    public Map<String, String>[] getDailyForecast() { return dailyForecast; }
    public void setDailyForecast(Map<String, String>[] value) { this.dailyForecast = value; }

    public String getStatus() { return status; }
    public void setStatus(String value) { this.status = value; }

    public Update getUpdate() { return update; }
    public void setUpdate(Update value) { this.update = value; }
}

// Basic.java

package io.quicktype;

import java.util.Map;

public class Basic {
    private String cid;
    private String location;
    private String parentCity;
    private String adminArea;
    private String cnty;
    private String lat;
    private String lon;
    private String tz;

    public String getCid() { return cid; }
    public void setCid(String value) { this.cid = value; }

    public String getLocation() { return location; }
    public void setLocation(String value) { this.location = value; }

    public String getParentCity() { return parentCity; }
    public void setParentCity(String value) { this.parentCity = value; }

    public String getAdminArea() { return adminArea; }
    public void setAdminArea(String value) { this.adminArea = value; }

    public String getCnty() { return cnty; }
    public void setCnty(String value) { this.cnty = value; }

    public String getLat() { return lat; }
    public void setLat(String value) { this.lat = value; }

    public String getLon() { return lon; }
    public void setLon(String value) { this.lon = value; }

    public String getTz() { return tz; }
    public void setTz(String value) { this.tz = value; }
}

// Update.java

package io.quicktype;

import java.util.Map;

public class Update {
    private String loc;
    private String utc;

    public String getLOC() { return loc; }
    public void setLOC(String value) { this.loc = value; }

    public String getUTC() { return utc; }
    public void setUTC(String value) { this.utc = value; }
}

我们看一下具体数据的代码

List<Map<String, String>> list = new ArrayList<Map<String, String>>();
        for (int i = 0; i < twos.size(); i++) {
            two = twos.getJSONObject(i);
            Map<String, String> map = new HashMap<String, String>();
            map.put("天气情况", twos.get("cond_txt_d").toString());
            map.put("最高温度", twos.get("tmp_max").toString());
            map.put("风力情况", twos.get("wind_sc").toString());
            list.add(map);
        }
        System.out.println(list.toString());
//上面复杂的结构在测试时加入相关数据

总结

使用quicktype是非常简单的,能够极大地减少代码量,解放了程序员编程的疲惫性,能让程序员工作在解决难题的基础上,而不是大量堆砌重复代码,那我们也能够学到更加有用的知识。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值