如何使用 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": '国庆节' // 只在调休下有该字段。表示调休的节假日
}
}