`

Android json通信(解析)方法

 
阅读更多
下面是在做天气预报程序时用到的Json通信,解析方法,备份一下,下次找就方便了;

1、链接服务器获取json字符串:

	public static String getJsonContent(String city) {
		String urlString="";
		try {
			urlString = URL + "&location=" + URLEncoder.encode(city, "UTF-8")
					+ "&ak=" + APP_KEY;
		} catch (UnsupportedEncodingException e1) {
			e1.printStackTrace();
		}
		
		try {// 获取HttpURLConnection连接对象
			URL url = new URL(urlString);
			HttpURLConnection httpConn = (HttpURLConnection) url
					.openConnection();
			// 设置连接属性
			httpConn.setConnectTimeout(8000);
			httpConn.setDoInput(true);
			httpConn.setRequestMethod("GET");
			// 获取相应码
			int respCode = httpConn.getResponseCode();
			if (respCode == 200) {
				return ConvertStream2Json(httpConn.getInputStream());
			}
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "";
	}


	private static String ConvertStream2Json(InputStream inputStream) {
		String jsonStr = "";
		// ByteArrayOutputStream相当于内存输出流
		ByteArrayOutputStream out = new ByteArrayOutputStream();
		byte[] buffer = new byte[1024];
		int len = 0;
		// 将输入流转移到内存输出流中
		try {
			while ((len = inputStream.read(buffer, 0, buffer.length)) != -1) {
				out.write(buffer, 0, len);
			}
			// 将内存流转换为字符串
			jsonStr = new String(out.toByteArray());
		} catch (IOException e) {
			e.printStackTrace();
		}
		return jsonStr;
	}


2、解析Json字符串:
Json的解析无外乎Jsonobject、JsonArray,针对服务器返回的具体字符串进行解析,下面只是给了一个例子,例子对应的Json字符串如下:

result:{
"error":0,"status":"success","date":"2014-07-30",
"results":[
{"currentCity":"北京","pm25":"209",
"index":[
{"title":"穿衣","zs":"热","tipt":"穿衣指数","des":"天气热,建议着短裙、短裤、短薄外套、T恤等夏季服装。"},
{"title":"洗车","zs":"不宜","tipt":"洗车指数","des":"不宜洗车,路面积水较多,不宜擦洗汽车。如果执意擦洗,要做好溅上泥水的心理准备。"},
{"title":"感冒","zs":"较易发","tipt":"感冒指数","des":"相对今天出现了较大幅度降温,较易发生感冒,体质较弱的朋友请注意适当防护。"},
{"title":"运动","zs":"较适宜","tipt":"运动指数","des":"阴天,较适宜进行各种户内外运动。"},
{"title":"紫外线强度","zs":"弱","tipt":"紫外线强度指数","des":"紫外线强度较弱,建议出门前涂擦SPF在12-15之间、PA+的防晒护肤品。"}],
"weather_data":[
{"date":"周三 07月30日 (实时:23℃)","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/duoyun.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/duoyun.png","weather":"多云","wind":"微风","temperature":"29 ~ 24℃"},
{"date":"周四","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/qing.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/qing.png","weather":"晴","wind":"微风","temperature":"31 ~ 24℃"},
{"date":"周五","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/duoyun.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/duoyun.png","weather":"多云","wind":"微风","temperature":"34 ~ 25℃"},
{"date":"周六","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/qing.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/qing.png","weather":"晴","wind":"微风","temperature":"34 ~ 24℃"}
]
}
]
}


	public static int getJsonResult(String result) {
		int resultError = 0;
		Map<String, String> reslutMap = new HashMap<String, String>();
		try {
			JSONObject jObject = new JSONObject(result);
			//返回错误码,0为正常,其他请查询状态表;
			resultError = Integer.valueOf(jObject.get("error").toString());
			
			//网络时间
			NET_DATE = jObject.get("date").toString();
			
			JSONArray jArray = new JSONArray(jObject.get("results").toString());
			JSONObject jaObject = jArray.getJSONObject(0);

			//当前城市
			NET_CITY = jaObject.get("currentCity").toString();
			NET_PM25 = jaObject.get("pm25").toString();
			
			//指数
			indexList.clear();
			JSONArray indexArray = new JSONArray(jaObject.get("index")
					.toString());
			for (int i = 0; i < indexArray.length(); i++) {
				JSONObject indexObject = indexArray.getJSONObject(i);
				IndexEntity index = new IndexEntity();
				index.setTitle(indexObject.get("title").toString());
				index.setZs(indexObject.get("zs").toString());
				index.setTipt(indexObject.get("tipt").toString());
				index.setDes(indexObject.get("des").toString());
				indexList.add(index);
			}
			

			//天气
			weatherList.clear();
			JSONArray weatherArray = new JSONArray(jaObject.get("weather_data")
					.toString());
			for (int i = 0; i < weatherArray.length(); i++) {
				JSONObject weatherObject = weatherArray.getJSONObject(i);
				WeatherEntity weather = new WeatherEntity();
				weather.setDate(weatherObject.get("date").toString());
				weather.setDayPictureUrl(weatherObject.get("dayPictureUrl")
						.toString());
				weather.setNightPictureUrl(weatherObject.get("nightPictureUrl")
						.toString());
				weather.setWeather(weatherObject.get("weather").toString());
				weather.setWind(weatherObject.get("wind").toString());
				weather.setTemperature(weatherObject.get("temperature")
						.toString());
				weatherList.add(weather);
			}
		} catch (JSONException e) {
			e.printStackTrace();
		}

		return resultError;
	}
分享到:
评论

相关推荐

    Android JSON数据的封装及解析

    在Android开发中,JSON(JavaScript Object Notation)是一种常用的数据交换格式,因其轻量级、易读易写的特点,被广泛应用于服务器与客户端之间的数据通信。本教程将深入讲解如何在Android中对JSON数据进行封装和...

    Android读取本地json文件的方法(解决显示乱码问题)

    - **Android操作JSON格式数据**:Android提供了Gson库、org.json库等工具来解析和生成JSON数据。 - **Android数据库操作**:SQLite是Android内置的轻量级数据库,可以用于持久化数据。 - **Android Activity操作**:...

    Android解析json速度对比

    在Android开发中,JSON作为一种轻量级的数据交换格式,被广泛用于网络通信和数据存储。在处理大量JSON数据时,解析速度就显得尤为重要,因为它直接影响到应用的性能和用户体验。本篇文章将深入探讨在Android环境下,...

    Android Studio解析JSON对象

    本主题聚焦于“Android Studio解析JSON对象”,这是一个非常关键且实用的技能,因为JSON作为一种轻量级的数据交换格式,广泛应用于网络通信和数据存储。JSON对象可以方便地表示各种复杂的数据结构,包括数组、键值...

    android json与xml解析 例子 demo

    在Android中,有两种主要的XML解析方法:DOM解析(Document Object Model)和SAX解析(Simple API for XML)。 - DOM解析:一次性加载整个XML文档到内存,适合小规模的XML文件。 - SAX解析:事件驱动型解析,只读取...

    Android Json解析

    本篇文章将深入探讨Android平台上的JSON解析,包括基本概念、解析方法以及实际应用。 一、JSON基础知识 JSON是一种基于文本的格式,其数据结构主要由键值对(对象)和数组组成。对象以大括号{}包围,键值对以冒号:...

    JS调用Android方法,向Android方法传递json数据

    本文将深入探讨如何使用JavaScript调用Android的方法,并传递JSON数据,以实现两者之间的高效通信。 首先,我们需要了解`Android WebView`。WebView是Android系统提供的一种组件,它能够加载并显示网页内容,就像是...

    Android json的解析

    你可以通过解压这个文件,查看源码来学习和理解如何在Android中处理JSON数据和进行网络通信。 总的来说,理解并熟练掌握JSON的解析对于任何Android开发者来说都是非常重要的技能,因为它在数据交换和存储中起着至关...

    Android json解析

    在Android开发中,JSON(JavaScript Object Notation)是一种常用的数据交换格式,因其轻量级、易读易写的特点,被广泛应用于服务器与客户端之间的数据通信。这篇博客详细讲解了如何在Android环境中对JSON数据进行...

    android json 的生成和解析

    总之,JSON在Android开发中扮演着至关重要的角色,无论是在网络通信、数据存储还是对象序列化方面。熟悉并熟练掌握JSON的生成和解析技巧,对于提升Android应用的开发效率和质量有着积极的影响。

    android HTTP通信例子(json数据传递)

    总结起来,这个Android HTTP通信例子展示了如何在Android应用中使用HTTP协议与Java Web服务器进行交互,包括JSON数据的传递、文件的上传和下载,以及错误处理等关键环节。理解并掌握这些技术对于开发功能丰富的...

    Android JSON数据格式解析_服务端

    在Android开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于客户端与服务端之间的数据传输。GSON是Google提供的一个Java库,它可以将Java对象转换为等效的JSON字符串,反之亦然,使得...

    Json解析Gson解析

    在IT行业中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于服务器与客户端之间的数据通信,尤其在Web服务中极为常见。而Gson是Google开发的一个Java库,用于将Java对象转换为JSON格式...

    android json php mysql

    Android客户端接收到响应后,再次解析JSON,将数据呈现给用户。 在描述中提到,此示例可能是对网上的教程进行了改进,这意味着可能包括了错误修正、性能优化或者功能增强。提供的网址可能详细解释了如何实现这一...

    Android JSON 解析库的使用

    在Android开发中,数据交换和存储常常涉及到JSON格式,它是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。本文将详细介绍两种常用的Android JSON解析库——Gson和Fast-json,以及它们的...

    android解析json小程序

    在Android应用开发中,JSON(JavaScript Object Notation)是一种常用的数据交换格式,它简洁、易于读写,并且被广泛应用于网络通信与数据存储。本项目是一个基于Eclipse IDE的Android小程序,专门展示了如何在...

    【Android】JSON数据的读写方法

    本篇文章将深入探讨Android环境下JSON数据的读写方法。 一、JSON数据格式 JSON数据格式基于JavaScript语法,但独立于语言,具有以下基本结构: 1. 对象(Object):以花括号 `{}` 包裹,键值对以逗号分隔,键(Key...

    Android_JSON_RPC_0.zip_JSON_android json_android-CS_json android

    在Android中,JSON常用来与服务器进行数据交互,实现客户端与服务端之间的RPC(Remote Procedure Call)通信。Android JSON RPC 0.zip 包含了Android JSON的实例,覆盖了服务端和客户端的实现,这对于理解JSON在...

    android demo,json数据的处理,json字符串的发送和解析。

    在Android开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于应用程序与...理解并掌握这些知识点对于Android开发者来说至关重要,因为JSON已经成为移动应用与服务器通信的标准数据格式。

    Android Http (Json) 服务器端和客户端通信

    在Android客户端,实现与服务器端的通信主要包括发送HTTP请求和解析返回的JSON数据。下面是一些常用的方法和技巧: 1. **使用HttpURLConnection或第三方库**:在Android中,可以使用`HttpURLConnection`类直接发送...

Global site tag (gtag.js) - Google Analytics