{"result":[{"provinceName":"北京","provinceAdcode":"110000","scs":[{"cityName":"北京","cityAdcode":"110000","storeCount":8,"stores":[{"storeId":"438756a3-c82c-413b-81ad-9a10ba57aa22","name":"#书店","phone":"136444333443","adcode":"110101","address":"火之国木叶村金城中心902","description":"","ownerName":null,"createTime":1437468277000,"recordStatus":0,"safetyId":"111"},{"storeId":"712bd2b5-d339-49cb-85c2-f4a282d538da","name":"花姑娘店","phone":"010-68953265","adcode":"110101","address":"北京市海淀区","description":"","ownerName":null,"createTime":1438087562000,"recordStatus":0,"safetyId":"111"},{"storeId":"7ec4f6bc-4d92-4275-a1ee-264b0f37c113","name":"?一堂南京店","phone":"13567895432","adcode":"110101","address":"23344","description":"送达","ownerName":null,"createTime":1438135291000,"recordStatus":0,"safetyId":"111"},{"storeId":"841ec798-acbb-475b-9a2c-8064c07077c4","name":"#珠宝店","phone":"13423232221","adcode":"110103","address":"火之国木叶村金城中心902","description":"","ownerName":"薛菲","createTime":1437468251000,"recordStatus":0,"safetyId":"111"},{"storeId":"8eb18be8-ff74-450c-82bc-1740b955cc97","name":"dede1","phone":"010-65855500","adcode":"110101","address":"6333","description":"222122222","ownerName":null,"createTime":1438784180000,"recordStatus":0,"safetyId":"100088"},{"storeId":"949ec894-c34d-4211-ab46-d188776a8e95","name":"方庄店","phone":"1352254558","adcode":"110106","address":"金城中心902室","description":"方庄店","ownerName":"嘿嘿","createTime":1434444128000,"recordStatus":0,"safetyId":"111"},{"storeId":"bf72813e-e082-42a7-bc2b-77a5c26e0c0f","name":"#花店2","phone":"13567898765","adcode":"110102","address":"哈哈","description":"哈哈","ownerName":null,"createTime":1437571418000,"recordStatus":0,"safetyId":"111"},{"storeId":"fdb89119-40a4-44c4-831c-24edc09637ef","name":"安贞店","phone":"13855854854","adcode":"110105","address":"朝阳路100号","description":"测试","ownerName":"找小二","createTime":1434444108000,"recordStatus":0,"safetyId":"111"}]}]}],"description":"操作成功","status":true}
把上面的json转为bean
bean 如下:
import java.util.List;
public class SysStoreLMvo {
private String provinceName;
private String provinceAdcode;
private List<SysStoreCityMvo> scs;
public String getProvinceName() {
return provinceName;
}
public void setProvinceName(String provinceName) {
this.provinceName = provinceName;
}
public String getProvinceAdcode() {
return provinceAdcode;
}
public void setProvinceAdcode(String provinceAdcode) {
this.provinceAdcode = provinceAdcode;
}
public List<SysStoreCityMvo> getScs() {
return scs;
}
public void setScs(List<SysStoreCityMvo> scs) {
this.scs = scs;
}
}
import java.util.List;
public class SysStoreCityMvo {
private String cityName;
private String cityAdcode;
private Integer storeCount;
private List<SysStore> stores;
public List<SysStore> getStores() {
return stores;
}
public void setStores(List<SysStore> stores) {
this.stores = stores;
}
public String getCityName() {
return cityName;
}
public void setCityName(String cityName) {
this.cityName = cityName;
}
public String getCityAdcode() {
return cityAdcode;
}
public void setCityAdcode(String cityAdcode) {
this.cityAdcode = cityAdcode;
}
public Integer getStoreCount() {
return storeCount;
}
public void setStoreCount(Integer storeCount) {
this.storeCount = storeCount;
}
}
import java.util.Date;
import java.util.UUID;
public class SysStore {
private String storeId;
private String name;
private String phone;
private String adcode;
private String address;
private String description;
private String ownerName;
private Date createTime;
private Integer recordStatus;
private String safetyId;
public SysStore() {
storeId = UUID.randomUUID().toString();
}
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId == null ? null : storeId.trim();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name == null ? null : name.trim();
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone == null ? null : phone.trim();
}
public String getAdcode() {
return adcode;
}
public void setAdcode(String adcode) {
this.adcode = adcode == null ? null : adcode.trim();
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address == null ? null : address.trim();
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description == null ? null : description.trim();
}
public String getOwnerName() {
return ownerName;
}
public void setOwnerName(String ownerName) {
this.ownerName = ownerName == null ? null : ownerName.trim();
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Integer getRecordStatus() {
return recordStatus;
}
public void setRecordStatus(Integer recordStatus) {
this.recordStatus = recordStatus;
}
public String getSafetyId() {
return safetyId;
}
public void setSafetyId(String safetyId) {
this.safetyId = safetyId == null ? null : safetyId.trim();
}
}
如何转啊?有没有api
Google Gson可以很方便的处理JSON,建议抽空去详细了解其常用功能。另外,要想处理好JSON,你必须要对JSON的数据格式有透彻的认识。
在项目中导入 gson.jar
一个jar包就可以了。
要想处理你所给的JSON字符串,上面你列出的三个类是不够的,最外层也需要一个辅助类。
public class Info implements Serializable{
private static final long serialVersionUID = 1L;
private List<SysStoreLMvo> result;
private String description;
private boolean status;
public List<SysStoreLMvo> getResult() {
return result;
}
public void setResult(List<SysStoreLMvo> result) {
this.result = result;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
}
你的JSON数据的createTime
是long
类型的,不能用Date
类型去接收。修改为private long createTime
后,可以用下面的main
方法进行测试:
public static void main(String[] args) {
String str = "{\"result\":[{\"provinceName\":\"北京\",\"provinceAdcode\":\"110000\",\"scs\":[{\"cityName\":\"北京\",\"cityAdcode\":\"110000\",\"storeCount\":8,\"stores\":[{\"storeId\":\"438756a3-c82c-413b-81ad-9a10ba57aa22\",\"name\":\"#书店\",\"phone\":\"136444333443\",\"adcode\":\"110101\",\"address\":\"火之国木叶村金城中心902\",\"description\":\"\",\"ownerName\":null,\"createTime\":1437468277000,\"recordStatus\":0,\"safetyId\":\"111\"},{\"storeId\":\"712bd2b5-d339-49cb-85c2-f4a282d538da\",\"name\":\"花姑娘店\",\"phone\":\"010-68953265\",\"adcode\":\"110101\",\"address\":\"北京市海淀区\",\"description\":\"\",\"ownerName\":null,\"createTime\":1438087562000,\"recordStatus\":0,\"safetyId\":\"111\"},{\"storeId\":\"7ec4f6bc-4d92-4275-a1ee-264b0f37c113\",\"name\":\"?一堂南京店\",\"phone\":\"13567895432\",\"adcode\":\"110101\",\"address\":\"23344\",\"description\":\"送达\",\"ownerName\":null,\"createTime\":1438135291000,\"recordStatus\":0,\"safetyId\":\"111\"},{\"storeId\":\"841ec798-acbb-475b-9a2c-8064c07077c4\",\"name\":\"#珠宝店\",\"phone\":\"13423232221\",\"adcode\":\"110103\",\"address\":\"火之国木叶村金城中心902\",\"description\":\"\",\"ownerName\":\"薛菲\",\"createTime\":1437468251000,\"recordStatus\":0,\"safetyId\":\"111\"},{\"storeId\":\"8eb18be8-ff74-450c-82bc-1740b955cc97\",\"name\":\"dede1\",\"phone\":\"010-65855500\",\"adcode\":\"110101\",\"address\":\"6333\",\"description\":\"222122222\",\"ownerName\":null,\"createTime\":1438784180000,\"recordStatus\":0,\"safetyId\":\"100088\"},{\"storeId\":\"949ec894-c34d-4211-ab46-d188776a8e95\",\"name\":\"方庄店\",\"phone\":\"1352254558\",\"adcode\":\"110106\",\"address\":\"金城中心902室\",\"description\":\"方庄店\",\"ownerName\":\"嘿嘿\",\"createTime\":1434444128000,\"recordStatus\":0,\"safetyId\":\"111\"},{\"storeId\":\"bf72813e-e082-42a7-bc2b-77a5c26e0c0f\",\"name\":\"#花店2\",\"phone\":\"13567898765\",\"adcode\":\"110102\",\"address\":\"哈哈\",\"description\":\"哈哈\",\"ownerName\":null,\"createTime\":1437571418000,\"recordStatus\":0,\"safetyId\":\"111\"},{\"storeId\":\"fdb89119-40a4-44c4-831c-24edc09637ef\",\"name\":\"安贞店\",\"phone\":\"13855854854\",\"adcode\":\"110105\",\"address\":\"朝阳路100号\",\"description\":\"测试\",\"ownerName\":\"找小二\",\"createTime\":1434444108000,\"recordStatus\":0,\"safetyId\":\"111\"}]}]}],\"description\":\"操作成功\",\"status\":true}";
Gson gson = new Gson();
Info info = gson.fromJson(str, Info.class);
System.out.println(info.getDescription());
System.out.println(info.isStatus());
List<SysStoreLMvo> result = info.getResult();
for (SysStoreLMvo sysStoreLMvo : result) {
List<SysStoreCityMvo> scs = sysStoreLMvo.getScs();
for (SysStoreCityMvo sysStoreCityMvo : scs) {
List<SysStore> stores = sysStoreCityMvo.getStores();
for (SysStore sysStore : stores) {
System.out.println(sysStore.getName());
}
}
}
}
我测试的输出结果:
操作成功
true
#书店
花姑娘店
?一堂南京店
#珠宝店
dede1
方庄店
#花店2
安贞店
建议楼主使用org.codehaus.jackson这个包,以下是我帮楼主解析之后的结果:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class ParseJson {
public static void main(String[] args) {
File file = new File(
"/home/user/wechat-connect/we-connect/we-connect/we-connect-core/src/main/resources/test.json");
BufferedReader reader = null;
StringBuilder stringBuilder = new StringBuilder();
try {
reader = new BufferedReader(new FileReader(file));
String tempString = null;
while ((tempString = reader.readLine()) != null) {
stringBuilder.append(tempString);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
JSONObject jsonObject = JSONObject.fromObject(stringBuilder.toString());
JSONArray jsonArray = jsonObject.getJSONArray("result");
JSONObject jsonObject2 = jsonArray.getJSONObject(0);
SysStoreLMvo sysStoreLMvo = JSONUtil.jsonStr2Model(jsonObject2.toString(), SysStoreLMvo.class);
System.out.println(sysStoreLMvo.getProvinceName());
System.out.println(sysStoreLMvo.toString());
List<SysStoreCityMvo> scs = sysStoreLMvo.getScs();
for (SysStoreCityMvo sysStoreCityMvo : scs) {
List<SysStore> stores = sysStoreCityMvo.getStores();
for (SysStore sysStore : stores) {
System.out.println(sysStore);
}
}
}
}
上面的文件就是楼主粘出来的字符串,我只是放在文件中读取,这不是重点。输出:
北京
{"provinceName":"北京","provinceAdcode":"110000","scs":[{"cityName":"北京","cityAdcode":"110000","storeCount":8,"stores":[{"storeId":"438756a3-c82c-413b-81ad-9a10ba57aa22","name":"#书店","phone":"136444333443","adcode":"110101","address":"火之国木叶村金城中心902","description":"","ownerName":null,"createTime":1437468277000,"recordStatus":0,"safetyId":"111"},{"storeId":"712bd2b5-d339-49cb-85c2-f4a282d538da","name":"花姑娘店","phone":"010-68953265","adcode":"110101","address":"北京市海淀区","description":"","ownerName":null,"createTime":1438087562000,"recordStatus":0,"safetyId":"111"},{"storeId":"7ec4f6bc-4d92-4275-a1ee-264b0f37c113","name":"?一堂南京店","phone":"13567895432","adcode":"110101","address":"23344","description":"送达","ownerName":null,"createTime":1438135291000,"recordStatus":0,"safetyId":"111"},{"storeId":"841ec798-acbb-475b-9a2c-8064c07077c4","name":"#珠宝店","phone":"13423232221","adcode":"110103","address":"火之国木叶村金城中心902","description":"","ownerName":"薛菲","createTime":1437468251000,"recordStatus":0,"safetyId":"111"},{"storeId":"8eb18be8-ff74-450c-82bc-1740b955cc97","name":"dede1","phone":"010-65855500","adcode":"110101","address":"6333","description":"222122222","ownerName":null,"createTime":1438784180000,"recordStatus":0,"safetyId":"100088"},{"storeId":"949ec894-c34d-4211-ab46-d188776a8e95","name":"方庄店","phone":"1352254558","adcode":"110106","address":"金城中心902室","description":"方庄店","ownerName":"嘿嘿","createTime":1434444128000,"recordStatus":0,"safetyId":"111"},{"storeId":"bf72813e-e082-42a7-bc2b-77a5c26e0c0f","name":"#花店2","phone":"13567898765","adcode":"110102","address":"哈哈","description":"哈哈","ownerName":null,"createTime":1437571418000,"recordStatus":0,"safetyId":"111"},{"storeId":"fdb89119-40a4-44c4-831c-24edc09637ef","name":"安贞店","phone":"13855854854","adcode":"110105","address":"朝阳路100号","description":"测试","ownerName":"找小二","createTime":1434444108000,"recordStatus":0,"safetyId":"111"}]}]}
{"storeId":"438756a3-c82c-413b-81ad-9a10ba57aa22","name":"#书店","phone":"136444333443","adcode":"110101","address":"火之国木叶村金城中心902","description":"","ownerName":null,"createTime":1437468277000,"recordStatus":0,"safetyId":"111"}
{"storeId":"712bd2b5-d339-49cb-85c2-f4a282d538da","name":"花姑娘店","phone":"010-68953265","adcode":"110101","address":"北京市海淀区","description":"","ownerName":null,"createTime":1438087562000,"recordStatus":0,"safetyId":"111"}
{"storeId":"7ec4f6bc-4d92-4275-a1ee-264b0f37c113","name":"?一堂南京店","phone":"13567895432","adcode":"110101","address":"23344","description":"送达","ownerName":null,"createTime":1438135291000,"recordStatus":0,"safetyId":"111"}
{"storeId":"841ec798-acbb-475b-9a2c-8064c07077c4","name":"#珠宝店","phone":"13423232221","adcode":"110103","address":"火之国木叶村金城中心902","description":"","ownerName":"薛菲","createTime":1437468251000,"recordStatus":0,"safetyId":"111"}
{"storeId":"8eb18be8-ff74-450c-82bc-1740b955cc97","name":"dede1","phone":"010-65855500","adcode":"110101","address":"6333","description":"222122222","ownerName":null,"createTime":1438784180000,"recordStatus":0,"safetyId":"100088"}
{"storeId":"949ec894-c34d-4211-ab46-d188776a8e95","name":"方庄店","phone":"1352254558","adcode":"110106","address":"金城中心902室","description":"方庄店","ownerName":"嘿嘿","createTime":1434444128000,"recordStatus":0,"safetyId":"111"}
{"storeId":"bf72813e-e082-42a7-bc2b-77a5c26e0c0f","name":"#花店2","phone":"13567898765","adcode":"110102","address":"哈哈","description":"哈哈","ownerName":null,"createTime":1437571418000,"recordStatus":0,"safetyId":"111"}
{"storeId":"fdb89119-40a4-44c4-831c-24edc09637ef","name":"安贞店","phone":"13855854854","adcode":"110105","address":"朝阳路100号","description":"测试","ownerName":"找小二","createTime":1434444108000,"recordStatus":0,"safetyId":"111"}
我在楼主的三个类上都重写了toString()方法:
@Override
public String toString() {
return JSONUtil.object2JsonStr(this);
}
JSONUtil类下面的两个方法如下:
import java.io.IOException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.DeserializationConfig.Feature;
import com.augmentum.we.connect.exception.ServiceErrorException;
public class JSONUtil {
private static ObjectMapper mapper;
static {
mapper = new ObjectMapper();
mapper.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}
public static String object2JsonStr(Object obj) {
String jsonStr = null;
try {
jsonStr = mapper.writeValueAsString(obj);
return jsonStr;
} catch (IOException e) {
throw new ServiceErrorException("Json parse error!" + obj, e);
}
}
public static <T> T jsonStr2Model(String jsonStr, Class<T> clazz) {
T model = null;
try {
model = mapper.readValue(jsonStr, clazz);
return model;
} catch (Exception e) {
throw new ServiceErrorException("Json parse error!", e);
}
}
}
https://github.com/google/gson