这周在开发中遇到一些所需数据但是不在数据库中,需要我们调用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循环中写插入数据库的语句就可以了。

 

Logo

一站式 AI 云服务平台

更多推荐