android JSON解析

原创 2013年12月05日 11:17:12

     

JSON的定义:

一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为。 Json.org

JSON Vs XML

1.JSON和XML的数据可读性基本相同

2.JSON和XML同样拥有丰富的解析手段

3.JSON相对于XML来讲,数据的体积小

4.JSON与JavaScript的交互更加方便

5.JSON对数据的描述性比XML较差

6.JSON的速度要远远快于XML
android的json解析部分都在包org.json下,主要有以下几个类:

JSONObject:可以看作是一个json对象,这是系统中有关JSON定义的基本单元,其包含一对儿(Key/Value)数值。它对外部(External应用toString()方法输出的数值)调用的响应体现为一个标准的字符串(例如:{"JSON": "Hello, World"},最外被大括号包裹,其中的KeyValue被冒号":"分隔)。其对于内部(Internal)行为的操作格式略微,例如:初始化一个JSONObject实例,引用内部的put()方法添加数值:new JSONObject().put("JSON", "Hello, World!"),在KeyValue之间是以逗号","分隔。Value的类型包括:BooleanJSONArrayJSONObjectNumberString或者默认值JSONObject.NULL object 。

JSONStringer:json文本构建类 ,根据官方的解释,这个类可以帮助快速和便捷的创建JSON text。其最大的优点在于可以减少由于格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntax rules)创建JSON text。每个JSONStringer实体只能对应创建一个JSON text。。其最大的优点在于可以减少由于格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntax rules)创建JSON text。每个JSONStringer实体只能对应创建一个JSON text。

JSONArray它代表一组有序的数值。将其转换为String输出(toString)所表现的形式是用方括号包裹,数值以逗号”,”分隔(例如:[value1,value2,value3],大家可以亲自利用简短的代码更加直观的了解其格式)。这个类的内部同样具有查询行为, get()和opt()两种方法都可以通过index索引返回指定的数值,put()方法用来添加或者替换数值。同样这个类的value类型可以包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object。

  1. //假设现在要创建这样一个json文本
  2. //{
  3. //"phone" : ["12345678", "87654321"], // 数组
  4. //"name" : "yuanzhifei89", // 字符串
  5. //"age" : 100, // 数值
  6. //"address" : { "country" : "china", "province" : "jiangsu" }, // 对象
  7. //"married" : false // 布尔值
  8. //}
  9. try{
  10. //首先最外层是{},是创建一个对象
  11. JSONObjectperson = newJSONObject();
  12. //第一个键phone的值是数组,所以需要创建数组对象
  13. JSONArrayphone = newJSONArray();
  14. phone.put("12345678").put("87654321");
  15. person.put("phone",phone);
  16. person.put("name","yuanzhifei89");
  17. person.put("age",100);
  18. //键address的值是对象,所以又要创建一个对象
  19. JSONObjectaddress = newJSONObject();
  20. address.put("country","china");
  21. address.put("province","jiangsu");
  22. person.put("address",address);
  23. person.put("married",false);
  24. }catch(JSONException ex) {
  25. //键为null或使用json不支持的数字格式(NaN, infinities)
  26. thrownewRuntimeException(ex);
      




// 普通Json数据解析

58 privatevoid parseJson(String strResult) {
59 try{
60 JSONObject jsonObj = newJSONObject(strResult).getJSONObject("singer");
61 intid = jsonObj.getInt("id");
62 String name = jsonObj.getString("name");
63 String gender = jsonObj.getString("gender");
64 tvJson.setText("ID号"+id + ", 姓名:" + name + ",性别:"+ gender);
65 }catch(JSONException e) {
66 System.out.println("Json parse error");
67 e.printStackTrace();
70 //解析多个数据的Json
71 privatevoid parseJsonMulti(String strResult) {
72 try{
73 JSONArray jsonObjs = newJSONObject(strResult).getJSONArray("singers");
74 String s = "";
75 for(inti = 0; i < jsonObjs.length() ; i++){
76 JSONObject jsonObj = ((JSONObject)jsonObjs.opt(i))
77 .getJSONObject("singer");
78 intid = jsonObj.getInt("id");
79 String name = jsonObj.getString("name");
80 String gender = jsonObj.getString("gender");
81 s += "ID号"+id + ", 姓名:" + name + ",性别:"+ gender+ "\n";
82 }
83 tvJson.setText(s);
84 }catch(JSONException e) {
85 System.out.println("Jsons parse error !");
86 e.printStackTrace(); 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android网络请求解析以及JSON文本

  • 2017年08月08日 14:31
  • 25KB
  • 下载

android 网络请求+json解析 最优分析

最近在项目中使用到了网络请求,网页数据以 json的方式返回,所以也避免不了json解析。...

Android Json解析

  • 2012年08月22日 16:46
  • 327KB
  • 下载

android json 的生成和解析

  • 2015年10月28日 14:03
  • 1.17MB
  • 下载

Android中的xml、json格式数据解析

转载请注明出处:          本博文相关的Demo下载链接:   前言:在开发Android第三方App应用的过程中,特别是涉及到网络请求的App,都会涉及到解析后台返回的数据。而后台返回的数据...

Android(全JSON解析含第三方jar包)

  • 2016年07月11日 22:23
  • 17.4MB
  • 下载

Json解析的方法Android自带的和Gson

  • 2016年03月17日 23:29
  • 6.55MB
  • 下载

说说关于Android使用Gson解析Json所需实体类的那些事~

LZ-Says:技术,真的是日积月累,厚积薄发~ 前言目前解析json的方法有很多种,LZ个人认为使用Gson还是一种很不错的选择,因为使用Gson时,我们只需要考虑将json中参数和实体类属性一一对...

Android---Volley请求天气接口JSON解析

  • 2016年03月16日 16:33
  • 1.19MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android JSON解析
举报原因:
原因补充:

(最多只允许输入30个字)