Postman Java 代快速解析响应

如何使用 Postman 的Java片段

似乎代码片段是 okhttp3 而不是 okhttp …

	<dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>okhttp</artifactId>
        <version>4.9.1</version>
    </dependency>

引入 依赖 import okhttp3.*;

package com.example.demo.holiday;

import com.alibaba.fastjson.JSONObject;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import org.junit.Test;

import java.io.IOException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;

/**
 * @description:
 * @author: xmc000
 * @create: 2022-08-12 13:24
 **/
public class Main {
    private static final String BASE_URL = "https://timor.tech/api/holiday/year/2022";


    @Test
    public void name() throws IOException {
        OkHttpClient client = new OkHttpClient();

        Request request = new Request.Builder()
                .url(BASE_URL)
                .build();

        try (Response response = client.newCall(request).execute()) {
            String string = response.body().string();
            
            JSONObject json = JSONObject.parseObject(string);

            JSONObject holidayList = (JSONObject) json.get("holiday");
            List<Holiday> holidays = new ArrayList<>();

            for (Map.Entry<String, Object> entry : holidayList.entrySet()) {

                JSONObject o = (JSONObject) entry.getValue();
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");


                Holiday holiday = new Holiday();
                holiday.setHoliday(o.getBoolean("holiday"));
                holiday.setName(o.getString("name"));
                holiday.setAfter(o.getBoolean("after"));
                holiday.setWage(o.getInteger("wage"));
                holiday.setTarget(o.getString("target"));

                LocalDate localDate;
                if (Optional.ofNullable(o.getString("date")).isPresent()) {
                    localDate = LocalDate.parse(o.getString("date"), formatter);
                    holiday.setDate(localDate);
                }
                holiday.setRest(o.getInteger("rest"));

                holidays.add(holiday);
            }
            List<Holiday> sortByDateAse = holidays.stream()
                    .sorted(Comparator.comparing(Holiday::getDate))
                    .peek(System.out::println)
                    .collect(Collectors.toList());

        }
    }
}

节假日 实体类

package com.example.demo.holiday;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDate;

/**
 * @description:
 * @author: xmc000
 * @create: 2022-08-01 14:11
 **/
@NoArgsConstructor
@Data
public class Holiday {


    @JSONField(name = "after")
    private Boolean after;
    @JSONField(name = "date",format="yyyy-MM-dd")
    private LocalDate date;
    @JSONField(name = "holiday")
    private Boolean holiday;
    @JSONField(name = "name")
    private String name;
    @JSONField(name = "rest")
    private Integer rest;
    @JSONField(name = "target")
    private String target;
    @JSONField(name = "wage")
    private Integer wage;
}


节假日 api扩展

{
      "code": 0,              // 0服务正常。-1服务出错
      "type": {
        "type": enum(0, 1, 2), // 节假日类型,分别表示 工作日、周末、节日。
        "name": "周六",         // 节假日类型中文名,可能值为 周一 至 周日、假期的名字、某某调休。
        "week": enum(1 - 7)    // 一周中的第几天。值为 1 - 7,分别表示 周一 至 周日。
      },
      "holiday": {
        "holiday": false,     // true表示是节假日,false表示是调休
        "name": "国庆前调休",  // 节假日的中文名。如果是调休,则是调休的中文名,例如'国庆前调休'
        "wage": 1,            // 薪资倍数,1表示是1倍工资
        "after": false,       // 只在调休下有该字段。true表示放完假后调休,false表示先调休再放假
        "target": '国庆节'     // 只在调休下有该字段。表示调休的节假日
      }
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值