Json解析之FastJson

来源:互联网 发布:贵金属交易mt4软件 编辑:程序博客网 时间:2024/04/25 18:08

1、FastJson介绍

FastJson是阿里巴巴提供的一个Json处理工具包,具有极快的性能,超越任其他的Java Json parser。使用起来非常方便。

2、例程

首先下载fastjson-1.1.27-android.jar包并导入工程中:

DataBean.java:

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:

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 = 购物网站

3、Bean的命名规则

Bean中对应的set必须和Json中的字段对应,比如Json中有id字段,get方法名应该为setId,必须是set+字段名,字段名忽略大小写,如果字段是类似的is_default,那么set方法名应为setIs_default,下划线不能省略

4、注意事项

有一次在项目中用的时候遇到一个小插曲,不管怎么样解析出来的ResponseBean都没有数据,后来才发现是默认做了代码混淆的缘故,在proguard.flags设置对该类不做代码混淆就可以了。

5、Java对象转Json

FastJson可以很方便的把Java的一些实例转化为Json字符串:

HashMap<String, String> map = new HashMap<String, String>();map.put("key1", "test1");map.put("key2", "test2");String json = JSON.toJSONString(map);



0 0
原创粉丝点击