您的位置:首页 > 移动开发 > Android开发

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();
}
}


以上就是最基本的解析方法。

其它解析方式会在近期本文下方更新
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: