json字符串转List<T>的错误(感谢)

Android 码拜 10年前 (2015-05-10) 1307次浏览 0个评论
 

现有一串,从数据库中读取的JSON字符串,如下:
String str=”[{“area”:”0.42″,”outarea”:”0.00″,”techname”:”OSP”},{“area”:”0.00″,”outarea”:”191.10″,”techname”:”VCUT”}]”;
希望 转换成List<t>类型呈,便于显示到activity。
问题在于,今 天研究了一天,也没有解决!使用了json-lib,jackson;两种方式均不能解决,
执行到   ObjectMapper mapper = new ObjectMapper(); 或者 SONArray jsonArray= JSONArray.fromObject(str) 时 就不能调试通过。
logcat 没有错误信息提示,异常跳转到 class file editor ,source not found.
泛型 类如下:
public class mktorderinfo {

String techname;
String area;
String outarea;

public String getTechname() {
return techname;
}
public void setTechname(String techname) {
this.techname = techname;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}

public String getOutarea() {
return outarea;
}
public void setOutarea(String outarea) {
this.outarea = outarea;
}

}

18分
有几行用了java 1.8 ,其他的都可以的,
解析json需要导入的包,可以参考:http://download.csdn.net/detail/yang12hua34/4062529

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by puruidong on 2015/5/1.
 */


class MktorderInfo {

    String techname;
    String area;
    String outarea;

    public String getTechname() {
        return techname;
    }

    public void setTechname(String techname) {
        this.techname = techname;
    }

    public String getArea() {
        return area;
    }

    public void setArea(String area) {
        this.area = area;
    }

    public String getOutarea() {
        return outarea;
    }

    public void setOutarea(String outarea) {
        this.outarea = outarea;
    }


    /**
     * 创建一个T对象.
     *
     * @param jo
     * @return
     */
    public static MktorderInfo createMktorderInfo(JSONObject jo) {
        if (jo == null || jo.size() == 0) {
            return null;
        }
        MktorderInfo mi = new MktorderInfo();
        mi.setArea(jo.containsKey("area") ? jo.getString("area") : "");
        mi.setOutarea(jo.containsKey("outarea") ? jo.getString("outarea") : "");
        mi.setTechname(jo.containsKey("techname") ? jo.getString("techname") : "");
        return mi;
    }


    /**
     * 创建一个List<T>
     *
     * @param array
     * @return
     */
    public static List<MktorderInfo> createMktorderInfoList(JSONArray array) {
        if (array.size() == 0) {
            return null;
        }
        List<MktorderInfo> list = new ArrayList<MktorderInfo>();
        for (int i = 0; i < array.size(); i++) {
            JSONObject jo = array.getJSONObject(i);
            list.add(createMktorderInfo(jo));
        }
        return list;
    }
}


public class Entity {
    public static void main(String[] args) {
        String str = "[{""area"":""0.42"",""outarea"":""0.00"",""techname"":""OSP""},{""area"":""0.00"",""outarea"":""191.10"",""techname"":""VCUT""}]";
        JSONArray ja = JSONArray.fromObject(str);
        List<MktorderInfo> mlist = MktorderInfo.createMktorderInfoList(ja);
       //下面是java 1.8 代码.
        mlist.forEach(t -> {
            System.out.println("T*>>>>>>" + t + ">>>>area:" + t.getArea() + ",outarea:" + t.getOutarea() + ",techname:" + t.getTechname());
        });
    }
}
1分
T*>>>>>>MktorderInfo@3d012ddd>>>>area:0.42,outarea:0.00,techname:OSP
T*>>>>>>MktorderInfo@6f2b958e>>>>area:0.00,outarea:191.10,techname:VCUT

Process finished with exit code 0

上面程序的运行结果.


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明json字符串转List<T>的错误(感谢)
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!