Json详解与使用

来源:互联网 发布:盘古数据股票 编辑:程序博客网 时间:2024/06/04 08:14

Json解析

  json格式:

      {名称:值,....,名称:值}对象

       [值,....,值 ] 数组(值可以是字符串,数值,对象或者数组,可以嵌套)

  图解:

        

        

  优点:  

       1.    比xml格式简单,更易于阅读,轻量,更容易解析
                    2.    json是更好的数据交换格式,xml是更好的文档交换格式
                    3.    json更易于机器阅读,使用简单的客户端库或自身支持的javaScript
                    4.    json可被浏览器客户端支持
                    5.    可支持各种通用的数据结构,记录,列表,树等
                    6.    21种语言支持可生成和解析json格式

   缺点:

       1.    不可扩展
                    2.    语义性较差,显示不如xml直观

   json解析实例:

      1.要解析的json文件

复制代码
 1 { 2     "retcode": 200, 3     "data": [ 4         { 5             "id": 10000, 6             "title": "新闻", 7             "type": 1, 8         "des":"这是一条有内涵的新闻1111"         9         },10         {11             "id": 10002,12             "title": "专题",13             "type": 10,14             "des":"这是一条有内涵的新闻222222"    15         },16         {17             "id": 10003,18             "title": "组图2",19             "type": 2,20             "des":"这是一条有内涵的新闻333333"    21         },22      {23             "id": 10006,24             "title": "组图4",25             "type": 2,26             "des":"这是一条有内涵的新闻333333"    27         },28      {29             "id": 10008,30             "title": "组图5",31             "type": 2,32             "des":"这是一条有内涵的新闻333333"    33         },34      {35             "id": 10003,36             "title": "组图6",37             "type": 2,38             "des":"这是一条有内涵的新闻ddddd33"    39         },40      {41             "id": 10003,42             "title": "组图7",43             "type": 2,44             "des":"这是一条有内涵的新闻3ssss33333"    45         },46      {47             "id": 10003,48             "title": "组图8",49             "type": 2,50             "des":"这是一条有内涵的新闻33dddd33333"    51         },52         {53             "id": 10004,54             "title": "互动",55             "type": 3,56              "des":"这是一条有内涵的新闻444444"    57         }58     ],59     "header":"http://10.0.2.2:8080/aa.jpg"60 }
复制代码

      2.文件解析(原生)

复制代码
 1 public static MyBean readJson(String s) { 2         //对象不要设置为空,一定要new出来 3         MyBean myBean = new MyBean(); 4         List<MyBean.DataBean> data1 = new ArrayList<>(); 5         try { 6             //读取json的根目录 7             JSONObject object = new JSONObject(s); 8             //解析retcode标签 9             int retcode = object.getInt("retcode");10             myBean.setRetcode(retcode);11             //由于data是一个数组类型,里面包含多个对象,所以需要用集合解析data12             JSONArray data =object.getJSONArray("data");13             //遍历,得到data里包含的每个对象14             for (int i=0;i<data.length();i++){15                 //每个对象值被存放在dataBean中,所以需要new一个dataBean对象16                 MyBean.DataBean dataBean = new MyBean.DataBean();17                 //得到每一个data对象jsondata18                 JSONObject jsonData = (JSONObject) data.get(i);19                 //得到jsondata对象的每一个属性值20                 int id = jsonData.getInt("id");21//将属性值设置到dataBean22                 dataBean.setId(id);23                 String title =  jsonData.getString("title");24                 dataBean.setTitle(title);25                 int type =  jsonData.getInt("type");26                 dataBean.setType(type);27                 String des =  jsonData.getString("des");28                 dataBean.setDes(des);29                 //将dataBean存放至集合中30                 data1.add(dataBean);31                 //设置myBean的data值32                 myBean.setData(data1);33                 Log.e("text101", "readJson:===== "+dataBean.toString());34             }35             //解析header标签36             String header = object.getString("header");37             myBean.setHeader(header);38             return myBean;39         } catch (JSONException e) {40             e.printStackTrace();41             return null;42         }43     }44
复制代码

      3.使用Gson解析 需要导包    compile 'com.google.code.gson:gson:2.2.4'

1 Gson gson = new Gson();2       //fromJson()方法用来实现将Json数据转换为相应的Java对象   (toJson()方法用来实现将java对象转换为相应的Json数据)3       final MyBean myBean = gson.fromJson(s, MyBean.class);4       List<MyBean.DataBean> list = myBean.getData();
原创粉丝点击