Json

185 阅读2分钟

1.JSON值的内容形式可以是:”名称 - 值“对、数组 或 对象

JSON值的内容形式可以是:”名称 - 值“对、数组 或 对象

2. Gson解析

Google的开源库

  • 解析原理:基于事件驱动
  • 解析流程:根据所需取的数据
  • 建立1个对应于JSON数据的JavaBean类,即可通过简单操作解析出所需数据

3. Jackson解析

  • 解析原理:基于事件驱动
  • 解析过程: 类似 GSON,先创建1个对应于JSON数据的JavaBean类,再通过简单操作即可解析
  • 与 Gson解析不同的是:GSON可按需解析,即创建的JavaBean类不一定完全涵盖所要解析的JSON数据,按需创建属性;但Jackson解析对应的JavaBean必须把Json数据里面的所有key都有所对应,即必须把JSON内的数据所有解析出来,无法按需解析

4.解析方式对比

5. 与XML解析对比

import java.util.List;

public class Car {

    /**
     * translation : ["车"]
     * basic : {"phonetic":"kɑː","explains":["n. 汽车;车厢","n. (Car)人名;(土)贾尔;(法、西)卡尔;(塞)察尔"]}
     * query : car
     * errorCode : 0
     * web : [{"value":["汽车","车子","小汽车"],"key":"Car"},{"value":["概念车","概念车","概念汽车"],"key":"concept car"},{"value":["碰碰车","碰撞用汽车","碰碰汽车"],"key":"bumper car"}]
     */

    private BasicBean basic;
    private String query;
    private int errorCode;
    private List<String> translation;
    private List<WebBean> web;

    public BasicBean getBasic() {
        return basic;
    }

    public void setBasic(BasicBean basic) {
        this.basic = basic;
    }

    public String getQuery() {
        return query;
    }

    public void setQuery(String query) {
        this.query = query;
    }

    public int getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(int errorCode) {
        this.errorCode = errorCode;
    }

    public List<String> getTranslation() {
        return translation;
    }

    public void setTranslation(List<String> translation) {
        this.translation = translation;
    }

    public List<WebBean> getWeb() {
        return web;
    }

    public void setWeb(List<WebBean> web) {
        this.web = web;
    }

    public static class BasicBean {
        /**
         * phonetic : kɑː
         * explains : ["n. 汽车;车厢","n. (Car)人名;(土)贾尔;(法、西)卡尔;(塞)察尔"]
         */

        private String phonetic;
        private List<String> explains;

        public String getPhonetic() {
            return phonetic;
        }

        public void setPhonetic(String phonetic) {
            this.phonetic = phonetic;
        }

        public List<String> getExplains() {
            return explains;
        }

        public void setExplains(List<String> explains) {
            this.explains = explains;
        }
    }

    public static class WebBean {
        /**
         * value : ["汽车","车子","小汽车"]
         * key : Car
         */

        private String key;
        private List<String> value;

        public String getKey() {
            return key;
        }

        public void setKey(String key) {
            this.key = key;
        }

        public List<String> getValue() {
            return value;
        }

        public void setValue(List<String> value) {
            this.value = value;
        }
    }
}

转载:www.jianshu.com/p/b87fee2f7…