DataBean.java:css
package com.heqiang.testactivity; public class DataBean{ private String name; private String url; private String summary; private long id; public DataBean() { } public DataBean(long id, String name, String url, String summary) { this.id = id; this.name = name; this.url = url; this.summary = summary; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getSummary() { return summary; } public void setSummary(String summary) { this.summary = summary; } public long getId() { return id; } public void setId(long id) { this.id = id; } }
ResponseBean.java:html
package com.heqiang.testactivity; public class ResponseBean { private int code; private String message; private Value value; public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public Value getValue() { return value; } public void setValue(Value value) { this.value = value; } public static class Value { private String data; private boolean flag; public Value() { } public Value(String data, boolean flag) { this.data = data; this.setFlag(flag); } public String getData() { return data; } public void setData(String data) { this.data = data; } public boolean isFlag() { return flag; } public void setFlag(boolean flag) { this.flag = flag; } } }
private void testFastJson(){ String data = "{\"code\":200,\"message\":\"\",\"value\":{\"flag\":true,\"data\":[{\"url\":\"http://www.baidu.com\",\"id\":1,\"name\":\"百度\",\"summary\":\"搜索引擎\"},{\"url\":\"http://www.sina.com\",\"id\":2,\"name\":\"新浪\",\"summary\":\"门户站点\"},{\"url\":\"http://www.qq.com\",\"id\":3,\"name\":\"腾讯\",\"summary\":\"社交网络\"},{\"url\":\"http://www.taobao.com\",\"id\":4,\"name\":\"淘宝\",\"summary\":\"购物站点\"}]}}"; ResponseBean reponse = JSON.parseObject(data, ResponseBean.class); if(reponse != null && reponse.getCode() == 200 && reponse.getValue() != null && reponse.getValue().getData() != null){ List<DataBean> list = JSON.parseArray(reponse.getValue().getData(), DataBean.class); for (DataBean dataBean : list) { Log.d("Test", "name = "+dataBean.getName()+", url = "+dataBean.getUrl()+", id = " +dataBean.getId()+", summary = "+dataBean.getSummary()); } } }
name = 百度, url = http://www.baidu.com, id = 1, summary = 搜索引擎 name = 新浪, url = http://www.sina.com, id = 2, summary = 门户站点 name = 腾讯, url = http://www.qq.com, id = 3, summary = 社交网络 name = 淘宝, url = http://www.taobao.com, id = 4, summary = 购物站点
Bean中相应的set必须和Json中的字段相应。比方Json中有id字段。get方法名应该为setId。必须是set+字段名,字段名忽略大写和小写,假设字段是类似的is_default,那么set方法名应为setIs_default。下划线不能省略java
有一次在项目中用的时候遇到一个小插曲,不管怎么样解析出来的ResponseBean都没有数据。后来才发现是默认作了代码混淆的缘故。在proguard.flags设置对该类不作代码混淆就可以了。android
FastJson可以很是方便的把Java的一些实例转化为Json字符串:json
HashMap<String, String> map = new HashMap<String, String>(); map.put("key1", "test1"); map.put("key2", "test2"); String json = JSON.toJSONString(map);