框架:Jackson
先贴个数据接口传递过来的数据,guideMachineLocations后面的集合都是一样的,火狐格式化json数据插件:JSON Lite。
先判断数据类型,是单个对象,多个对象还是单个对象内嵌多个对象集合,对应要采用不同的方法进行接收和处理,否则会出错。
这个明显是单个对象,内嵌多个对象集合,可采用转换为实体对象的方式处理(我这里的示例是转化为实体对象,还有其他一堆方法自行度娘):
代码1-测试类:
package com.thinkgem.jeesite.common.test;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.thinkgem.jeesite.common.mapper.JsonMapper;
import com.thinkgem.jeesite.common.utils.StreamUtils;
public class SkylineHttpAcceptTest {
public static void main(String[] args) throws Exception {
ObjectMapper objectMapper = new ObjectMapper();
String urlStr = "链接";
URL url = new URL(urlStr);
URLConnection conn = url.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
String inStr = StreamUtils.InputStreamTOString(is);
System.out.println(inStr);
is.close();
HotPoint acc = objectMapper.readValue(inStr, HotPoint.class);
System.out.println(acc);
}
}
代码2-对象类:
package com.thinkgem.jeesite.common.test;
import java.util.List;
public class HotPoint {
private int operationOrgId;
private String operationOrgName;
private String centerLongitude;
private String centerLatitude;
private int rangeRadius;
private List<GuideMachineLocationsBean> guideMachineLocations;
public int getOperationOrgId() {
return operationOrgId;
}
public void setOperationOrgId(int operationOrgId) {
this.operationOrgId = operationOrgId;
}
public String getOperationOrgName() {
return operationOrgName;
}
public void setOperationOrgName(String operationOrgName) {
this.operationOrgName = operationOrgName;
}
public String getCenterLongitude() {
return centerLongitude;
}
public void setCenterLongitude(String centerLongitude) {
this.centerLongitude = centerLongitude;
}
public String getCenterLatitude() {
return centerLatitude;
}
public void setCenterLatitude(String centerLatitude) {
this.centerLatitude = centerLatitude;
}
public int getRangeRadius() {
return rangeRadius;
}
public void setRangeRadius(int rangeRadius) {
this.rangeRadius = rangeRadius;
}
public List<GuideMachineLocationsBean> getGuideMachineLocations() {
return guideMachineLocations;
}
public void setGuideMachineLocations(
List<GuideMachineLocationsBean> guideMachineLocations) {
this.guideMachineLocations = guideMachineLocations;
}
public static class GuideMachineLocationsBean {
private String _id;
private String did;
private String udate;
private String ip;
private int status;
private LocBean loc;
public String get_id() {
return _id;
}
public void set_id(String _id) {
this._id = _id;
}
public String getDid() {
return did;
}
public void setDid(String did) {
this.did = did;
}
public String getUdate() {
return udate;
}
public void setUdate(String udate) {
this.udate = udate;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public LocBean getLoc() {
return loc;
}
public void setLoc(LocBean loc) {
this.loc = loc;
}
public static class LocBean {
private double longitude;
private double latitude;
public double getLongitude() {
return longitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
public double getLatitude() {
return latitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
}
}
}
常见问题:
一般为判断数据格式错误,把单个对象混淆为多个对象,使用了错误的转换方法。