`
zhangfan822
  • 浏览: 255877 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

android解析json

阅读更多

上一篇写了java产生json

http://zhangfan822.iteye.com/blog/1880830

这一篇就来写android解析访问servlet返回得到的json

其实上一篇也写了解析的内容..下在直接上代码吧.

解析单数据与多数据的json

单数据{'singer':{'id':01,'name':'zhangfan','gender':'男'}} 
多个数据
{"singers":[ 
        {'id':02,'name':'zf','gender':'男'}, 
        {'id':03,'name':'jerry,'gender':'男'}, 
        {'id':04,'name':'jim,'gender':'男'},
        {'id':05,'name':'lily,'gender':'女'}
]}                                                                            

 

public class JsonActivity extends Activity {
	private TextView tvJson;
	private Button btnJson;
	private Button btnJsonMulti;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		tvJson = (TextView) this.findViewById(R.id.tvJson);
		btnJson = (Button) this.findViewById(R.id.btnJson);
		btnJsonMulti = (Button) this.findViewById(R.id.btnJsonMulti);
		btnJson.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				//普通Json数据
				String strUrl = "http://10.0.2.2:8080/myServlet/JsonServlet1";
				//获得返回的Json字符串
				String strResult = connServerForResult(strUrl);
				//解析Json字符串
				parseJson(strResult);
			}
		});
		btnJsonMulti.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				//多个数据的Json
				String strUrl = "http://10.0.2.2:8080/myServlet/JsonServlet2";
				//String strUrl = ServerPageUtil.getStrUrl(UrlsOfServer.JSON_SINGERS);
				String strResult = connServerForResult(strUrl);
				//获得多个Singer
				parseJsonMulti(strResult);
			}
		});
	}
	//访问servlet得到json数据
	private String connServerForResult(String strUrl) {
		// HttpGet对象
		HttpGet httpRequest = new HttpGet(strUrl);
		String strResult = "";
		try {
			// HttpClient对象
			HttpClient httpClient = new DefaultHttpClient();
			// 获得HttpResponse对象
			HttpResponse httpResponse = httpClient.execute(httpRequest);
			if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
				// 取得返回的数据
				strResult = EntityUtils.toString(httpResponse.getEntity());
			}
		} catch (ClientProtocolException e) {
			tvJson.setText("protocol error");
			e.printStackTrace();
		} catch (IOException e) {
			tvJson.setText("IO error");
			e.printStackTrace();
		}
		return strResult;
	}
	// 普通Json数据解析
	private void parseJson(String strResult) {
		try {
			JSONObject jsonObj = new JSONObject(strResult).getJSONObject("singer");
			int id = jsonObj.getInt("id");
			String name = jsonObj.getString("name");
			String gender = jsonObj.getString("gender");
			tvJson.setText("ID号"+id + ", 姓名:" + name + ",性别:" + gender);
		} catch (JSONException e) {
			System.out.println("Json parse error");
			e.printStackTrace();
		}
	}
	//解析多个数据的Json
	private void parseJsonMulti(String strResult) {
		try {
			JSONArray jsonObjs = new JSONObject(strResult).getJSONArray("singers");
			String s = "";
			for(int i = 0; i < jsonObjs.length() ; i++){
				JSONObject jsonObj = ((JSONObject)jsonObjs.opt(i)).getJSONObject("singer");
				int id = jsonObj.getInt("id");
				String name = jsonObj.getString("name");
				String gender = jsonObj.getString("gender");
				s += "ID号"+id + ", 姓名:" + name + ",性别:" + gender+ "\n" ;
			}
			tvJson.setText(s);
		} catch (JSONException e) {
			System.out.println("Jsons parse error !");
			e.printStackTrace();
		}
	}
}

 

分享到:
评论

相关推荐

    Android应用源码之Android 解析json_dome.zip

    这个压缩包"Android应用源码之Android 解析json_dome.zip"提供了关于如何在Android应用中解析JSON的示例代码,对于学习Android开发中的网络数据处理非常有帮助。 首先,我们需要了解JSON的基本结构。JSON基于...

    老罗android 解析json数据源码

    本教程聚焦于老罗讲解的Android解析JSON数据的源码分析,这对于深入理解JSON处理以及优化应用程序性能至关重要。 首先,我们需要了解JSON的基本结构。JSON是一种基于键值对的格式,数据以键值对的形式存储,如{"key...

    android解析JSON字符串

    Android 解析 JSON 字符串 Android 解析 JSON 字符串是 Android 应用程序中非常常见的一种数据交互方式。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和...

    Android 解析json_dome.zip

    2. **Android解析JSON的库** 在Android中,我们通常使用两种库来解析JSON数据: - `org.json`:这是Android SDK自带的库,提供了JSONObject和JSONArray类,可以方便地解析JSON对象和数组。 - `...

    Android解析json速度对比

    在“Android解析json速度对比”的测试中,我们通常会设置一个标准的JSON数据集,然后使用这三个库进行反序列化操作,并记录每种库所花费的时间。测试方法可能包括以下步骤: 1. **数据准备**:创建一个包含大量键值...

    Android解析Json数据的PPT和源码

    这个资料包包含了一个关于Android解析JSON数据的PPT和源码,可以帮助开发者深入理解和实践Android中如何处理JSON数据。 首先,我们要理解JSON的基本结构。JSON由键值对组成,键用引号括起来,后跟冒号,值可以是...

    android解析json小程序

    下面将详细阐述Android解析JSON的基本步骤和涉及的技术点。 首先,要理解JSON的结构。JSON由键值对组成,可以是对象(对象以大括号{}包围)或数组(数组以方括号[]包围)。例如: ```json { "name": "John", ...

    安卓Android源码——安卓Android 解析json_dome.zip

    本资料“安卓Android源码——安卓Android 解析json_dome.zip”聚焦于如何在Android应用中解析JSON数据,为开发者提供了实践案例和代码示例。以下将详细介绍Android中处理JSON的相关知识点。 1. JSON基本结构: ...

    Android解析JSON

    二、Android解析JSON 在Android中,我们通常使用两种方式解析JSON:Gson库和JSON-Parsing API(如`org.json`库)。 1. Gson库 Google提供的Gson库可以方便地将JSON字符串转换为Java对象,反之亦然。首先,你需要在...

    Android程序研发源码Android 解析json_dome.rar

    以下是一些关于Android解析JSON的关键知识点: 1. **JSON基本结构**:JSON由键值对(key-value pairs)组成,数据以对象(objects)或数组(arrays)的形式存储。对象用花括号{}包围,数组用方括号[]包围。键是字符...

    Android解析JSON格式

    ### Android解析JSON格式 在Android应用开发中,与服务器交互获取数据是常见需求之一,而JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。因此,掌握...

    老罗android视频开发源码和ppt--android 解析json

    本资源包“老罗android视频开发源码和ppt--android 解析json”是由知名讲师罗升阳(老罗)提供的,旨在帮助开发者深入理解如何在Android平台上解析和处理JSON数据。罗升阳先生以其深入浅出的教学风格和丰富的实战...

    Android解析json数据

    总结,Android解析JSON数据是常见的任务,开发者可以选择不同的库和方法来实现。理解JSON的结构,熟练使用解析库,以及妥善处理网络请求和异步操作,是提升Android开发能力的关键步骤。通过阅读给定的博客文章,可以...

    Android 解析json_dome

    本教程将围绕“Android解析json_dome”这一主题,详细介绍如何在Android应用中解析JSON数据。 首先,我们需要理解JSON的基本结构。JSON数据以键值对的形式存储,可以是对象({})、数组([])、字符串("...")、...

    Android 解析json_dome.zip源码资源下载

    这个“Android解析json_dome.zip”源码资源包含了一系列关于如何在Android平台上解析JSON数据的示例。以下是相关知识点的详细说明: 1. JSON基本结构: JSON基于JavaScript语法,但独立于语言,主要由键值对(key-...

    android 解析json数据

    2. Android解析JSON库: Android提供了两个内置库来处理JSON数据:`org.json`和`com.google.gson`。`org.json`库适用于简单的JSON操作,而`com.google.gson`库功能更强大,支持复杂对象的序列化和反序列化。 3. `...

    Android 解析json_dome.rar

    这个“Android解析json_dome.rar”压缩包可能包含了关于如何在Android应用中解析JSON数据的示例代码和相关教程。下面我们将深入探讨Android中解析JSON的常用方法和技术。 首先,Android提供了两种主要的方式来处理...

    Android高级应用源码-Android 解析json_dome.zip

    本资源“Android高级应用源码-Android 解析json_dome.zip”显然是一个关于如何在Android应用程序中解析JSON的示例项目。这个项目可能包含了多种解析JSON的方法和技术,旨在帮助开发者理解和掌握Android中的JSON处理...

Global site tag (gtag.js) - Google Analytics