首页 > 关于json转bean的问题?

关于json转bean的问题?

{"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数据的createTimelong类型的,不能用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

【热门文章】
【热门文章】