Android json数据解析
2016-05-05 14:05
218 查看
欢迎转载,转载请标明出处^_^
1:何谓json:
在我们实际的开发过程当中,经常会用JSON格式传递实体类或是实体类的集合,JSON数据(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,易于阅读和编写,同时也易于机器解析和生成,是理想的数据交换格式。
JSON分为两种表现方式
JsonObject和
JsonArray。
JsonObject的数据格式为:{“名称”:“值”,“名称”:“值”,……}。通常用来表示一个实体的内容。JsonObject中可以有多个“名称”:“值”,用逗号分隔。
JsonArray的数据格式为:[{“名称”:“值”},{“名称”:“值”},{“名称”:“值”},……]。通常用来表示多个实体的内容,也就是说JsonArray是JsonObject的集合,用逗号分隔,最外层用中括号进行包裹。
例如用以上两种JSON格式表示用户的名字和密码:
JsonObject:
{“user”:“admin”,“pwd”:“123”}
JsonArray :
[{“user”:“admin”,“pwd”:“123”},{“user”:“csdn”,“pwd”:“234”}]
2:解析Json数据:
Android SDK中提供了
JSONArray,
JSONObject,
JSONStringer,
JSONTokener,
JSONException等类对JSON数据进行操作,通过这些类可以非常方便的完成
JSON字符串与
JSONObject,
JSONArray之间的相互转换。常用方法如下:
JSONArray类
构造方法JSONArray(String json),把json格式的字符串创建成一个JSONArray对象。
length()方法,返回JSONObject的数量。
getJSONObject(int index)方法,根据下标返回JSONObject。
JSONObject类
构造方法JSONObject(String json),把json格式的字符串创建成一个JSONObject对象。
has(String name)方法,判断元素是否存在。
get(String name)方法,获取元素的值。
小实例:解析指定
JSONObject和
JSONArray:
String jsonObject = {"name":"admin","homePage":"www.localhost.com"} ; String jsonArray = [{"name":"admin","homePage":"www.localhost.com"},{"name":"normal_user","homePage":"www.localhost_normal.com"}] //解析JSONObject public void jsonData(String json){ try { //实例json JSONObject jsonObject = new JSONObject(json); String name = ""; String homePage = ""; //获取json中的属性值 if (jsonObject.has("name")){ name = jsonObject.getString("name"); } if (jsonObject.has("homePage")){ homePage = jsonObject.getString("homePage"); } Toast.makeText(this,name+"---"+homePage,Toast.LENGTH_SHORT).show(); } catch (JSONException e) { e.printStackTrace(); } } //解析JSONArray public void jsonArray(String json){ StringBuffer stringBuffer = new StringBuffer(); String name = ""; String homePage = ""; try { //实例json数组对象 JSONArray jsonArray = new JSONArray(json); //循环获取json数组里的json对象 for (int i = 0;i<jsonArray.length();i++){ JSONObject jsonObject = (JSONObject) jsonArray.get(i); //获取json中的属性值 if (jsonObject.has("name")){ name = jsonObject.getString("name"); stringBuffer.append(name); } if (jsonObject.has("homePage")){ homePage = jsonObject.getString("homePage"); stringBuffer.append(homePage); } } Toast.makeText(this,stringBuffer.toString(),Toast.LENGTH_SHORT).show(); } catch (JSONException e) { e.printStackTrace(); } }
以上就是最基本的解析方法。
其它解析方式会在近期本文下方更新
相关文章推荐
- 学习Android Studio开发工具之Activity3(框架2)
- Android ffmpeg解码
- Token在android中的使用
- Android开发中为什么不能标记重写(@override)抽象方法(abstract)
- Android开发——DiskLruCache用法详解以及工作原理深度解析
- Unable to create Debug Bridge: Unable to start adb server
- android 实现SQLite开启事务
- Android Orm框架分析
- android开发系列之二—欢迎页面幻灯制作
- android6.0源码分析之Camera框架简介
- Android [Dex Loader] Unable to execute dex:
- Android studio补全代码和自动提示
- 动画篇(二)——android属性动画
- android tabbar切换的实现
- Android消息反射机制(多线程)
- AndroidStudio初体验
- android图片拖动缩放
- Android studio 导入fresco报错can not resolve 'com.facebook.fresco:fresco'的解决思想
- android:layout_width=“0dp”有什么用?为什么这么设置?
- OPENGL es版本和OGL 及android关系