Android中解析JSON(一)
来源:互联网 发布:idc数据 研究院 编辑:程序博客网 时间:2024/05/18 18:14
什么是JSON?
1.JSON:Javascript Object Nation
2.JSON是一系列键值对的集合
3.JSON以经被大多数开发人员接受,在网络数据传输中应用相当广泛
4.JSON相对XML来说解析相对方便一些
JSON vs XML
1.JSON 和 XML 可读性基本相同
2.JSON 和 XML 同样有丰富的解析手段
3.JSON相对XML来说体积数据小
4.JSON和Javascript的交互更加方便
5.JSON对数据的描述性相对较差
有什么不懂的可以去官网去看看:www.json.org
在google android中也有关于解析JSON的类库:JsonReader,但是只能在3.0以后的版本中才可以用,在这里我们用google提供的类库google-gson,可以从code.google.com/p/google-gson/下载jar包。
下面通过一个小例子来学习一下:
例子:
[{"name":"zhangsan","age":22},{"name":"lisi","age":23}]
分析:
1.开始解析数组
2.开始解析对象
3.解析键值对
4.解析键值对
5.解析对象结束
6.开始解析对象
7.解析键值对
8.解析键值对
9.解析对象结束
10.解析数组结束
下面的是一个Activity,很简单只有一个button,并为button添加单击事件,
- package com.tony.json;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- public class JsonActivity extends Activity {
- /** Called when the activity is first created. */
- private String jsonData = "[{\"name\":\"zhangsan\",\"age\":22},{\"name\":\"lisi\",\"age\":23}]";
- private Button jsonButton;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- jsonButton = (Button) findViewById(R.id.json_button);
- jsonButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- JsonUtils jsonUtils = new JsonUtils();
- jsonUtils.parseJson(jsonData);
- }
- });
- }
- }
这个类中主要是解析json数组:
- package com.tony.json;
- import java.io.IOException;
- import java.io.StringReader;
- import android.util.Log;
- import com.google.gson.stream.JsonReader;
- public class JsonUtils {
- private static final String TAG = "JsonUtils";
- public void parseJson(String jsonData){
- JsonReader reader = new JsonReader(new StringReader(jsonData));
- try {
- reader.beginArray(); // 开始解析数组
- while (reader.hasNext()) {
- reader.beginObject(); // 开始解析对象
- while (reader.hasNext()) {
- String tagName = reader.nextName(); // 得到键值对中的key
- if (tagName.equals("name")) { // key为name时
- Log.i(TAG, "name--------->" + reader.nextString()); // 得到key中的内容
- }else if (tagName.equals("age")) { // key为age时
- Log.i(TAG, "age--------->" + reader.nextInt()); // 得到key中的内容
- }
- }
- reader.endObject();
- }
- reader.endArray();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
下面是运行后在logcat中打印出的结果:
- Android中解析JSON(一)
- Android中Json数据解析(一)--Json初步
- Android解析JSON数据(一)——JSON解析
- Android中数据文件解析(Json解析)
- Android中数据文件解析(Json解析)
- Android中数据文件解析(Json解析)
- android 解析json数据(一)
- Android的json解析方式(一)
- android中json解析
- Android中解析JSON
- Android中JSON解析
- Android中JSON解析
- Android中解析JSON
- Android中JSON解析
- Android中解析json
- android Json数据解析(一)
- Android基础之Json解析(中)
- Android中json的解析
- FPGA专区--------------4. simulink 中代数环的问题
- Zip解压库 zlibwrap
- atoi atof源码
- php运行时不显示错误信息?
- 算法导论代码 第23章 最小生成树
- Android中解析JSON(一)
- MFC总结(一):MFC中文件操作、查找与选择总结(3)
- 央企名录
- Android签名机制
- 如何让开机后第一个运行的程序是我的程序,而不是Launcher?
- 配置Android系统的各种设置
- 理解php Hash函数,增强密码安全
- 算法导论代码 第24章 单源最源路径
- Happ Birthday