zoukankan      html  css  js  c++  java
  • JSON 解析

    JSON数据格式,在Android中被广泛运用于客户端和网络(或者说服务器)通信,非常有必要系统的了解学习。
    恰逢本人最近对json做了一个简单的学习,特此总结一下,以飨各位。
    为了文章简明清晰,尽量多列点,少废话。
    参考文档:http://www.ietf.org/rfc/rfc4627.txt?number=46271.JSON解析
    (1).解析Object之一:
    1. {"url":"http://www.cnblogs.com/qianxudetianxia"}
    复制代码
    解析方法:
    1. JSONObject demoJson = new JSONObject(jsonString);
    2. String url = demoJson.getString("url");
    复制代码
    (2).解析Object之二:
    1. {"name":"android","name":"iphone"}
    复制代码
    解析方法:
    1. JSONObject demoJson = new JSONObject(jsonString);
    2. String name = demoJson.getString("name");
    3. String version = demoJson.getString("version");
    4. System.out.println("name:"+name+",version:"+version);
    复制代码
    (3).解析Array之一:
    1. {"number":[1,2,3]}
    复制代码
    解析方法:
    1. JSONObject demoJson = new JSONObject(jsonString);
    2. JSONArray numberList = demoJson.getJSONArray("number");
    3. for(int i=0; i
    4. //因为数组中的类型为int,所以为getInt,其他getString,getLong同用
    5. System.out.println(numberList.getInt(i));
    6. }
    复制代码
     (4).解析Array之二:
    1. {"number":[[1],[2],[3]]}
    复制代码
    解析方法:
    1. //嵌套数组遍历
    2. JSONObject demoJson = new JSONObject(jsonString);
    3. JSONArray numberList = demoJson.getJSONArray("number");
    4. for(int i=0; i
    5. //获取数组中的数组
    6. System.out.println(numberList.getJSONArray(i).getInt(0));
    7. }
    复制代码
     (5).解析Object和Array:
    1. {"mobile":[{"name":"android"},{"name":"iphone"}]}
    复制代码
    解析方法:
    1. JSONObject demoJson = new JSONObject(jsonString);
    2. JSONArray numberList = demoJson.getJSONArray("mobile");
    3. for(int i=0; i
    4. System.out.println(numberList.getJSONObject(i).getString("name"));
    5. }
    复制代码
    所以,我们发现get后面接着的是你想要的得到的结果的类型:getType,这个对理解很有帮助。
    (6).使用optType:
    上面的例子,使用getType在碰到查找不到节点的时候,会抛出异常。
    如果使用optType,找不到节点,则返回null或者默认值。
    1. //无url节点,抛出异常
    2. String url = demoJson.getString("url");
    3. //无url节点,返回空,如果为基本类型,则返回默认值
    4. String url = demoJson.optString("url");
    复制代码
     (7).UTF-8的BOM头导致解析JSON异常的问题
    到json文件保存为utf-8的时候,在windows平台下,会产生bom头"EF BB EF"字节在文本的最前面(需要用十六进制工具打开才能看的到)。
    有两种解决方法:
    a.使用UltraEdit打开json文件, 另存为的时候,选择格式UTF-8,无BOM头,如果还不行,在用记事本打开,另存为UTF-8下,多试几次就可以了。
    b.使用代码处理,截取json主体内容:
    1. String jsonString = getJsonString();
    2. jsonString = jsonString.substring(jsonString.indexOf("{"),jsonString.lastIndexOf("}")+1);
    复制代码

    2.JSON必知
    (1).JSON是一种轻量级的数据交换格式
    (2).JSON基于两种数据结构:Object和Array。其中Object是“名称/值”对的集合。
    (3).对象:大括号,每一组string-value结合以","分隔,string和value以冒号分隔。
    1.gif 

     

  • 相关阅读:
    Swift3 重写一个带占位符的textView
    Swift3 使用系统UIAlertView方法做吐司效果
    Swift3 页面顶部实现拉伸效果代码
    Swift3 倒计时按钮扩展
    iOS 获取当前对象所在的VC
    SpringBoot在IDEA下使用JPA
    hibernate 异常a different object with the same identifier value was already associated with the session
    SpringCloud IDEA 教学 番外篇 后台运行Eureka服务注册中心
    SpringCloud IDEA 教学 (五) 断路器控制台(HystrixDashboard)
    SpringCloud IDEA 教学 (四) 断路器(Hystrix)
  • 原文地址:https://www.cnblogs.com/liuzhuqing/p/7480465.html
Copyright © 2011-2022 走看看