Android开发之解析JSon数据
2013-09-27 18:46
393 查看
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式, 是一系列键值对的集合。
技术有优点肯定也会有缺点下面看下JSON与XML的比较
1.JSON和XML的数据可读性基本相同
2.JSON和XML同样拥有丰富的解析手段
3.JSON相对于XML来讲,数据的体积小
4.JSON与JavaScript的交互更加方便
5.JSON对数据的描述性比XML较差
6.JSON的速度要远远快于XML
JSon数据表示方式
{
“name”:"DMT",
"detail-info":
{
"birthday":"2013.09.27"
"job":"programmer"
}
}
想更多地了解什么是JSon,可以到它的官网去看下,有中文的网址:http://www.json.org/json-zh.html
下面就用JsonReader来解析Json数据
在Android3.0之前需要添加google-gson的lib才能使用JsonReader,这是一个自包含的类库,不依赖其它的库。如有需要可以到点击打开链接下载。
如果是在Android3.0之后的版本就不需要手动添加.lib,安装SDK时已经帮我们安装好了。
不管是google-gson还是SDK的JsonReader,使用方法都是一样的;
要使用google-gson就要先添加lib到我们的工程,如下
在lib上右键出现下图,选择“configure buidl path”构建路径,这样我们就能使用google-gson了
定义一串简单的Json数据
定义一个工具类来解析Json数据
是Activity中定义一个按钮,点击按钮就开始解析Json数据
示例Demo
点击打开链接
技术有优点肯定也会有缺点下面看下JSON与XML的比较
1.JSON和XML的数据可读性基本相同
2.JSON和XML同样拥有丰富的解析手段
3.JSON相对于XML来讲,数据的体积小
4.JSON与JavaScript的交互更加方便
5.JSON对数据的描述性比XML较差
6.JSON的速度要远远快于XML
JSon数据表示方式
{
“name”:"DMT",
"detail-info":
{
"birthday":"2013.09.27"
"job":"programmer"
}
}
想更多地了解什么是JSon,可以到它的官网去看下,有中文的网址:http://www.json.org/json-zh.html
下面就用JsonReader来解析Json数据
在Android3.0之前需要添加google-gson的lib才能使用JsonReader,这是一个自包含的类库,不依赖其它的库。如有需要可以到点击打开链接下载。
如果是在Android3.0之后的版本就不需要手动添加.lib,安装SDK时已经帮我们安装好了。
不管是google-gson还是SDK的JsonReader,使用方法都是一样的;
要使用google-gson就要先添加lib到我们的工程,如下
在lib上右键出现下图,选择“configure buidl path”构建路径,这样我们就能使用google-gson了
定义一串简单的Json数据
private String JsonData = "[{\"name\":\"deng\",\"age\":30}, {\"name\":\"li\",\"age\":20}]";
定义一个工具类来解析Json数据
package com.example.utils; import java.io.IOException; import java.io.StringReader; import android.annotation.SuppressLint; import android.content.Context; import android.widget.Toast; import com.google.gson.stream.JsonReader; public class JsonUtils { private Context context; public void SetContext(Context context){ this.context = context; } @SuppressLint("NewApi") public void parseJson(String jsonData) { //首先生成JsonReader对象 JsonReader reader = new JsonReader(new StringReader(jsonData)); String na = null; int age = 0; try { reader.beginArray(); // 开始解析数组 while (reader.hasNext()) { //是否有下个Json对象 reader.beginObject(); //开始解析Json对象 while (reader.hasNext()) { //是否有下个键值对 String name = reader.nextName(); //读取键值对 if (name.equals("name")) { na = reader.nextString(); //获取字符串类型的值 Toast.makeText(context, "name = " + na, Toast.LENGTH_SHORT).show(); } else if (name.equals("age")) { age = reader.nextInt(); //获取整型值 Toast.makeText(context, "age = " + age, Toast.LENGTH_SHORT).show(); } } reader.endObject(); //解析对象结束 } reader.endArray(); //解析数组结束 } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
是Activity中定义一个按钮,点击按钮就开始解析Json数据
package com.example.jsondemo; import com.example.utils.JsonUtils; import android.os.Bundle; import android.app.Activity; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { private String JsonData = "[{\"name\":\"deng\",\"age\":30}, {\"name\":\"li\",\"age\":20}]"; private Button btn = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btn = (Button)findViewById(R.id.btn); btn.setOnClickListener(new btnListener()); } private class btnListener implements OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub JsonUtils jsonUtils = new JsonUtils(); jsonUtils.SetContext(MainActivity.this); jsonUtils.parseJson(JsonData); //解析传入的json数据 } } }得到的结果
示例Demo
点击打开链接
相关文章推荐
- Android开发--Json数据的解析
- Android开发之JSON数据解析详解(一)
- Android开发--Json数据的解析
- 【Android网络开发の4】解析和生成JSON数据
- Android开发案例:网络交互&XML与json数据解析&HttpUtil优化
- Android网络开发中如何使用JSON进行网络通信---Android JSON数据通讯方法解析
- Android网络开发中如何使用JSON进行网络通信---Android JSON数据通讯方法解析
- 老罗Android开发视频教程( android解析json数据 )4集集合
- Android 开发之JSON数据解析
- Android开发: JSONObject的数据解析
- Android开发之原生解析复杂的json数据
- Android开发之将json数据解析后填充到ListView
- Android开发-Json(二)Json数据的解析-完整Demo-AndroidStuidio
- Android开发之JSON数据解析详解(二)
- Android开发json数据解析之账单记录与查看详情(遍历到ListView中)
- Android开发中使用Gson解析OkHttp传回来的复杂json数据
- Android开发-Json(二)Json数据的解析-完整Demo-AndroidStuidio
- Android开发中经常遇到的一些不同Json格式数据的解析的总结
- Android网络开发中如何使用JSON进行网络通信---Android_JSON数据通讯方法解析
- Android开发中使用fastJSON将json格式的数据快速解析生成实体类并附上实体类生成器