当前位置: 代码迷 >> Java Web开发 >> 关于json反序列化为实体集合的有关问题
  详细解决方案

关于json反序列化为实体集合的有关问题

热度:45   发布时间:2016-04-14 20:40:38.0
关于json反序列化为实体集合的问题
本帖最后由 Aiolox 于 2015-04-22 22:18:36 编辑
Json字符串:
[{"userId":"","dbUser":"18","name":"18","deptCode":"","identity":"1","createDate":"","telephone":"","memo":""},
{"userId":"","dbUser":"19","name":"19","deptCode":"","identity":"1","createDate":"","telephone":"","memo":""}]


json反序列化为实体代码:
json = json.substring(1, json.length()-1);
JSONObject jsonObject = JSONObject.fromObject(json); 
user = (User)JSONObject.toBean(jsonObject, User.class);


问题一:需要用json.substring(1, json.length()-1) 去掉json字符串头尾的符号 [ ,否则
JSONObject jsonObject = JSONObject.fromObject(json); 会报错:需要以 { 开头,这是正常的么?

问题二:用上面的方法反序列化生成的User实体只有dbUser=18这个成员,而第2个dbUser=19这个成员被截掉了,请问该如何处理能够得到包含多个成员的User实体集合?

谢谢!
------解决思路----------------------
这本来就是一个数组型的标准的json串,用阿里的fastjson
代码如下,tostring方法只写了两个


import java.util.List;

import com.alibaba.fastjson.JSON;

public class JSONUtil {

    public static void main(String[] args) {
        String json = "[{\"userId\":\"\",\"dbUser\":\"18\",\"name\":\"18\",\"deptCode\":\"\",\"identity\":\"1\",\"createDate\":\"\",\"telephone\":\"\",\"memo\":\"\"},"
                      + " {\"userId\":\"\",\"dbUser\":\"19\",\"name\":\"19\",\"deptCode\":\"\",\"identity\":\"1\",\"createDate\":\"\",\"telephone\":\"\",\"memo\":\"\"}]";

        List<User> list = JSON.parseArray(json, User.class);
        System.out.println(list);
    }

}

class User {

    private String userId;
    private String dbUser;
    private String name;
    private String deptCode;
    private String identity;
    private String createDate;
    private String telephone;
    private String memo;

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getDbUser() {
        return dbUser;
    }

    public void setDbUser(String dbUser) {
        this.dbUser = dbUser;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDeptCode() {
        return deptCode;
    }

    public void setDeptCode(String deptCode) {
        this.deptCode = deptCode;
    }

    public String getIdentity() {
        return identity;
    }

    public void setIdentity(String identity) {
        this.identity = identity;
    }

    public String getCreateDate() {
        return createDate;
    }

    public void setCreateDate(String createDate) {
        this.createDate = createDate;
    }

    public String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public String getMemo() {
        return memo;
    }

    public void setMemo(String memo) {
        this.memo = memo;
    }

    public String toString() {
        return new StringBuffer()
        .append("userId:").append(userId)
        .append(";")
        .append("dbUser:").append(dbUser)
        .toString();
    }
}

  相关解决方案