android之json解析

详解:https://www.jianshu.com/p/b87fee2f7a23

--------Android Studio自带org.json解析

解析原理:基于文档驱动

解析流程:把全部文件读入到内存中 ->> 遍历所有数据 ->> 根据需要检索想要的数据
       
 具体使用:
// 创建需解析的JSON数据:student.json
// 将该文件放入到本地assets文件夹里
{
        "student":[
        {"id":1,"name":"小明","sex":"男","age":18,"height":175},
        {"id":2,"name":"小红","sex":"女","age":19,"height":165},
        {"id":3,"name":"小强","sex":"男","age":20,"height":185}
        ],
        "cat":"it"
        }
        
        
//从assets获取json文件
        InputStreamReader isr = new InputStreamReader(this.getClass().getClassLoader().getResourceAsStream("assets/" + "student.json"));
        //字节流转字符流
        BufferedReader bfr = new BufferedReader(isr);
        String line ;
        StringBuilder stringBuilder = new StringBuilder();
        while ((line = bfr.readLine())!=null){
        stringBuilder.append(line);
        }
        //将JSON数据转化为字符串
        JSONObject root = new JSONObject(stringBuilder.toString());
        //根据键名获取键值信息
        System.out.println("root:"+root.getString("cat"));
        
        JSONArray array = root.getJSONArray("student");
        for (int i = 0;i < array.length();i++)
        {
        JSONObject stud = array.getJSONObject(i);

        bfr.close();
        isr.close();
        is.close();//依次关闭流
        }
----------Gson解析(Google的开源库)--------

https://www.jianshu.com/p/e740196225a4
       
       解析原理:基于事件驱动
       解析流程:根据所需取的数据 建立1个对应于JSON数据的JavaBean类,即可通过简单操作解析出所需数据
       具体使用
       ****步骤1:创建一个与JSON数据对应的JavaBean类(用作存储需要解析的数据)
       Gson解析的关键 = 根据JSON数据 写出一个对应的JavaBean,

******2.导入GSON库
       导入依赖
 dependencies {
        compile 'com.google.code.gson:gson:2.3.1'
        }

*********3.使用GJson解析

*****简单Jason

1. 创建Gson对象
        Gson gson = newGson();
2. 创建JavaBean类的对象
        Student student = newEntityStudent();
3. 使用Gson解析:将JSON数据转为单个类实体
        String json = "{\"id\":1,\"name\":\"小明\",\"sex\":\"\",\"age\":18,\"height\":175}";
student = gson.fromJson(json,Student.class);// 解析:JavaBean对象 = gson.fromJson(son,javaBean类类名.class);
4. 调用student方法展示解析的数据
student.show();
5. 将Java集合转换为
jsonString json2 = gson.toJson(List);
********复杂jason

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


    public String[] translation;    //["车"]数组
    public basic basic;             //basic对象里面嵌套着对象,创建一个basic内部类对象
    public  static class basic{     //建立内部类,也可以在外部单独建立一个类
        public String phonetic;
        public String[] explains;
    }
    public String query;
    public int errorCode;
    public List<wb> web;            //web是一个对象数组,创建一个web内部类对象
    public static class wb{
        public String[] value;
        public String key;
    }

 ---------Jackson解析----------

  • 解析原理:基于事件驱动
-------------fastjason-------阿里巴巴出的----

https://segmentfault.com/a/1190000011212806

https://blog.csdn.net/eddie233/article/details/73730283

猜你喜欢

转载自blog.csdn.net/u011146511/article/details/80532825