学习 Json解析数据

今天学习了Json数据解析,两种解析方式:

1.JsonReader数据解析
2.android系统的JSONObject和JSONArray类


第一种JsonReader:

package com.example.json;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
	private Button button;
	private String jsonData = "[{\"name\":\"Zhangsan\",\"age\":23},{\"name\":\"LiSi\",\"age\":43}]";
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		button = (Button)findViewById(R.id.button);
		button.setOnClickListener(new ButtonListener());
	}
	
	class ButtonListener implements OnClickListener {
		public void onClick(View v) {
			JsonUtils jsonUtils = new JsonUtils();
			jsonUtils.Parsejson(jsonData);
		}
	}
}

package com.example.json;

import java.io.StringReader;

import android.annotation.SuppressLint;
import android.util.JsonReader;

public class JsonUtils {
	@SuppressLint("NewApi")
	public void Parsejson(String jsonData) {
		try {
	//新建jsonReader对象传入数据;
			JsonReader reader = new JsonReader(new StringReader(jsonData));
	//读取到数组对象开始解析
			reader.beginArray();
	//下一个数组对象是不是存在
			while (reader.hasNext()) {
	//读取对象
				reader.beginObject();
	//下一个对象是不是存在	
			while (reader.hasNext()) {
	//读取键名	
				String tagName = reader.nextName();
	//若名字为name输出语句,反之名字为age输出语句
					if (tagName.equals("name")) {
						System.out.println("name-->" + reader.nextString());
					} else if (tagName.equals("age")) {
						System.out.println("age-->" + reader.nextInt());
					}
				}
	//读取对象结束
				reader.endObject();
			}
	//读取数组对象结束
			reader.endArray();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
}


全部代码:

package com.example.json;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
	private Button button;
	private String jsonData = "[{\"name\":\"Zhangsan\",\"age\":23},{\"name\":\"LiSi\",\"age\":43}]";
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		button = (Button)findViewById(R.id.button);
		button.setOnClickListener(new ButtonListener());
	}
	
	class ButtonListener implements OnClickListener {
		public void onClick(View v) {
			JsonUtils jsonUtils = new JsonUtils();
			jsonUtils.Parsejson(jsonData);
		}
	}
}

package com.example.json;

import java.io.StringReader;

import android.annotation.SuppressLint;
import android.util.JsonReader;

public class JsonUtils {
	@SuppressLint("NewApi")
	public void Parsejson(String jsonData) {
		try {
			JsonReader reader = new JsonReader(new StringReader(jsonData));
			reader.beginArray();
			while (reader.hasNext()) {
				reader.beginObject();
				while (reader.hasNext()) {
					String tagName = reader.nextName();
					if (tagName.equals("name")) {
						System.out.println("name-->" + reader.nextString());
					} else if (tagName.equals("age")) {
						System.out.println("age-->" + reader.nextInt());
					}
				}
				reader.endObject();
			}
			reader.endArray();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
}




第二种android系统的JSONObject和JSONArray类
 
package com.example.jsonreader;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
	private Button button;
	private String jsonData = "{\"students\":[{\"name\":\"Jack\",\"age\":12}, {\"name\":\"Vista\",\"age\":23}, {\"name\":\"Kaka\",\"age\":22}, {\"name\":\"Hony\",\"age\":31}]}";

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		button = (Button)findViewById(R.id.button);
		button.setOnClickListener(new ButtonListener());
	}
	
	class ButtonListener implements OnClickListener {
		public void onClick(View v) {
			JsonUtils jsonUtils = new JsonUtils();
			jsonUtils.Parsejson(jsonData);
		}
	}
}


package com.example.jsonreader;

import org.json.JSONArray;
import org.json.JSONObject;

import android.annotation.SuppressLint;

public class JsonUtils {
	@SuppressLint("NewApi")
	public void Parsejson(String jsonData) {
		try {
			JSONObject jo = new JSONObject(jsonData);
			JSONArray jsonArray = (JSONArray)jo.get("students");
			for (int i = 0; i < jsonArray.length(); i++) {
				JSONObject o = (JSONObject)jsonArray.get(i);
				System.out.println("name-->" + o.getString("name") + "age-->" + o.getString("age"));
			}
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值