使用API获取json格式数据解析后插入数据库(过程详解)
这周在开发中遇到一些所需数据但是不在数据库中,需要我们调用API接口向服务器请求信息下来,但是那些信息都是json格式的数据不能直接插入到数据库中。一、首先在pom.xml中的dependencies标签中copy下面的代码,导入gson的jar包:<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -...
·
这周在开发中遇到一些所需数据但是不在数据库中,需要我们调用API接口向服务器请求信息下来,但是那些信息都是json格式的数据不能直接插入到数据库中。
一、首先在pom.xml中的dependencies标签中copy下面的代码,导入gson的jar包:
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
二、首先调用api获取到需要的数据,但是是json的格式,我们可以将这些数据复制到此网站中 https://www.json.cn 解析成如下图:

可以很清晰的看到这个json格式的整体结构,我们需要按照这些结构构造相关的类,将所需的数据存入到对应的类中。

三、我们通过观察json返回的数据格式可以得出需要创建三个类:VehicleOwner、OwnerData与OwnerList。
VehicleOwner类:我们所需的车主信息数据。
public class VehicleOwner {
private String vehicleId;
private String plateNo;
private Integer isBandPerson;
private String personId;
private String personName;
private String phoneNo;
private Integer plateType;
private Integer plateColor;
private Integer vehicleType;
private Integer vehicleColor;
private String mark;
public String getvehicleId() {
return vehicleId;
}
public void setvehicleId(String vehicleId) {
this.vehicleId = vehicleId == null ? null : vehicleId.trim();
}
public String getplateNo() {
return plateNo;
}
public void setplateNo(String plateNo) {
this.plateNo = plateNo == null ? null : plateNo.trim();
}
public Integer getisBandPerson() {
return isBandPerson;
}
public void setisBandPerson(Integer isBandPerson) {
this.isBandPerson = isBandPerson;
}
public String getpersonId() {
return personId;
}
public void setpersonId(String personId) {
this.personId = personId == null ? null : personId.trim();
}
public String getpersonName() {
return personName;
}
public void setpersonName(String personName) {
this.personName = personName == null ? null : personName.trim();
}
public String getphoneNo() {
return phoneNo;
}
public void setphoneNo(String phoneNo) {
this.phoneNo = phoneNo == null ? null : phoneNo.trim();
}
public Integer getplateType() {
return plateType;
}
public void setplateType(Integer plateType) {
this.plateType = plateType;
}
public Integer getplateColor() {
return plateColor;
}
public void setplateColor(Integer plateColor) {
this.plateColor = plateColor;
}
public Integer getvehicleType() {
return vehicleType;
}
public void setvehicleType(Integer vehicleType) {
this.vehicleType = vehicleType;
}
public Integer getvehicleColor() {
return vehicleColor;
}
public void setvehicleColor(Integer vehicleColor) {
this.vehicleColor = vehicleColor;
}
public String getMark() {
return mark;
}
public void setMark(String mark) {
this.mark = mark == null ? null : mark.trim();
}
}
OwnerData类:其中 List<VehicleOwner> 可以保存json数据中我们所需的车主信息。
import java.util.List;
import com.sugon.jcxy_car_info.model.VehicleOwner;
public class OwnerData {
private Integer total;
private Integer pageNo;
private Integer pageSize;
private List<VehicleOwner> list;
public Integer getTotal() {
return total;
}
public void setTotal(Integer total) {
this.total = total;
}
public Integer getPageNo() {
return pageNo;
}
public void setPageNo(Integer pageNo) {
this.pageNo = pageNo;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public List<VehicleOwner> getList() {
return list;
}
public void setList(List<VehicleOwner> list) {
this.list = list;
}
}
OwnerList类:这里可以将上述的OwnerData装载在这里。
public class OwnerList {
String code;
String msg;
OwnerData data;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public OwnerData getData() {
return data;
}
public void setData(OwnerData data) {
this.data = data;
}
}
四、解析json数据,获取我们需要的车主信息
package com.sugon.jcxy_car_info.utils;
import com.google.gson.Gson;
import com.sugon.jcxy_car_info.model.VehicleOwner;
public class OwnerInfoList {
public static void main(String[] args) {
Gson gson = new Gson();
OwnerList dataList = gson.fromJson("{\"code\":\"0\",\"msg\":\"SUCCESS\",\"data\":{\"total\":861,\"pageNo\":1,\"pageSize\":861,\"list\":[{\"vehicleId\":\"8e12fee89258497e9078c689cf8db037\",\"plateNo\":\"浙A****B\",\"isBandPerson\":1,\"personId\":\"5751ef2302904eb89ed52ad027586e21\",\"personName\":\"周胜利\",\"phoneNo\":null,\"plateType\":0,\"plateColor\":0,\"vehicleType\":1,\"vehicleColor\":4,\"mark\":null},{\"vehicleId\":\"3219722395e54443b9dcf78a16e90efc\",\"plateNo\":\"浙AJ511Q\",\"isBandPerson\":1,.........................................\"phoneNo\":null,\"plateType\":0,\"plateColor\":0,\"vehicleType\":1,\"vehicleColor\":1,\"mark\":null}]}}\r\n" +
"", OwnerList.class);
OwnerData data = dataList.getData();
for (VehicleOwner owner : data.getList()) {
System.out.println(owner.getpersonName()+"____"+owner.getplateNo()+"____"+owner.getpersonId());
}
}
}
执行结果:

可以看到获取了需要插入数据库的一条条收据,然后在for循环中写插入数据库的语句就可以了。
更多推荐




所有评论(0)