Json详解与使用

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是一个数组类型,里面包含多个对象,所以需要用集合解析data
12             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对象jsondata
18                 JSONObject jsonData = (JSONObject) data.get(i);
19                 //得到jsondata对象的每一个属性值
20                 int id = jsonData.getInt("id");
21//将属性值设置到dataBean
22                 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();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值