美文网首页
Json数据解析

Json数据解析

作者: loser先生 | 来源:发表于2017-06-26 10:03 被阅读0次

    简述

    今天主要学习了JSON数据解析的方法,目前所了解的JSON数据的解析方法有两种:一种是采用系统接口解析JSON数据,另外就是借助第三方的解析工具Gson(谷歌出品)或fastjson(阿里巴巴出品)等。

    JSON的简介

    JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

    在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型:对象表示为键值对、数据由逗号分隔、花括号保存对象、方括号保存数组。

    JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。

    var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的
    var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串
    

    JSON 和 JS 对象互转:

    要实现从对象转换为 JSON 字符串,使用 JSON.stringify() 方法:
    var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}'
    
    要实现从 JSON 转换为对象,使用 JSON.parse() 方法:
    var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'}
    

    JSON 和 XML比较:

    可读性

    JSON和XML的可读性可谓不相上下,一边是简易的语法,一边是规范的标签形式,很难分出胜负。

    可扩展性

    XML天生有很好的扩展性,JSON当然也有,没有什么是XML可以扩展而JSON却不能扩展的。不过JSON在Javascript主场作战,可以存储Javascript复合对象,有着xml不可比拟的优势。

    编码难度

    XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有提供的工具。无工具的情况下,相信熟练的开发人员一样能很快的写出想要的xml文档和JSON字符串,不过,xml文档要多很多结构上的字符。

    格式

    XML和JSON都使用结构化方法来标记数据,但JSON 简单的语法格式和清晰的层次结构明显要比 XML容易阅读,并且在数据交换方面,由于JOSN所使用的字符要比XML少得多,可以大大得节约传输数据所占用得带宽。

    采用系统接口解析JSON数据

    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    --------------------------------------------------------
    private ArrayList<MediaItem> parseJson(String json) {
        ArrayList<MediaItem> mediaItems = new ArrayList<>();
        try {
            JSONObject jsonObject = new JSONObject(json);//采用系统接口
            JSONArray jsonArray = jsonObject.optJSONArray("trailers");
            if (jsonArray != null && jsonArray.length() > 0){
                for (int i = 0;i < jsonArray.length();i++){
                    JSONObject jsonObjectItem = (JSONObject) jsonArray.get(i);
                    if (jsonObjectItem != null){
                        MediaItem mediaItem = new MediaItem();
    
                        String movieName = jsonObjectItem.optString("movieName");//视频名字    name
                        mediaItem.setName(movieName);
    
                        String videoTitle = jsonObjectItem.optString("videoTitle");//视频描述  desc
                        mediaItem.setDesc(videoTitle);
    
                        String imageUrl = jsonObjectItem.optString("coverImg");//图片地址   imageUrl
                        mediaItem.setImageUrl(imageUrl);
    
                        String hightUrl = jsonObjectItem.optString("hightUrl");//高清影片地址  data
                        mediaItem.setData(hightUrl);
    
                        //把数据添加到集合
                        mediaItems.add(mediaItem);
                    }
                }
            }
    
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return mediaItems;
    }
    

    采用Gson解析JSON数据

    下载json-2.2.1.jar,将其导入到工程文件下的libs目录下,然后右键添加Add As Library作为库文件添加到app module中。

    import com.google.gson.Gson;
    import org.json.JSONException;
    import org.json.JSONObject;
    ------------------------------------
    private SearchBean parsedJson(String result) {
        return new Gson().fromJson(result,SearchBean.class);//将Json数据解析成SearchBean类型
    }
    

    GsonFormat的使用

    在网页中复制要解析的Json数据,然后自定义一个空的javaBean,就是一个空的类,在空白处右键-->Generate-->GsonFormat,将Json数据粘贴到弹出的对话框中,点击ok,就可以自动生成对应javaBean的语句,非常好用。

    安装GsonFormat步骤:

    1.Android studio
    File->Settings..->Plugins-->Browse repositores..搜索GsonFormat

    2.安装插件,重启android studio。

    相关文章

      网友评论

          本文标题:Json数据解析

          本文链接:https://www.haomeiwen.com/subject/hbpdcxtx.html