下面是在做天气预报程序时用到的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(JavaScript Object Notation)是一种常用的数据交换格式,因其轻量级、易读易写的特点,被广泛应用于服务器与客户端之间的数据通信。本教程将深入讲解如何在Android中对JSON数据进行封装和...
- **Android操作JSON格式数据**:Android提供了Gson库、org.json库等工具来解析和生成JSON数据。 - **Android数据库操作**:SQLite是Android内置的轻量级数据库,可以用于持久化数据。 - **Android Activity操作**:...
在Android开发中,JSON作为一种轻量级的数据交换格式,被广泛用于网络通信和数据存储。在处理大量JSON数据时,解析速度就显得尤为重要,因为它直接影响到应用的性能和用户体验。本篇文章将深入探讨在Android环境下,...
本主题聚焦于“Android Studio解析JSON对象”,这是一个非常关键且实用的技能,因为JSON作为一种轻量级的数据交换格式,广泛应用于网络通信和数据存储。JSON对象可以方便地表示各种复杂的数据结构,包括数组、键值...
在Android中,有两种主要的XML解析方法:DOM解析(Document Object Model)和SAX解析(Simple API for XML)。 - DOM解析:一次性加载整个XML文档到内存,适合小规模的XML文件。 - SAX解析:事件驱动型解析,只读取...
本篇文章将深入探讨Android平台上的JSON解析,包括基本概念、解析方法以及实际应用。 一、JSON基础知识 JSON是一种基于文本的格式,其数据结构主要由键值对(对象)和数组组成。对象以大括号{}包围,键值对以冒号:...
本文将深入探讨如何使用JavaScript调用Android的方法,并传递JSON数据,以实现两者之间的高效通信。 首先,我们需要了解`Android WebView`。WebView是Android系统提供的一种组件,它能够加载并显示网页内容,就像是...
你可以通过解压这个文件,查看源码来学习和理解如何在Android中处理JSON数据和进行网络通信。 总的来说,理解并熟练掌握JSON的解析对于任何Android开发者来说都是非常重要的技能,因为它在数据交换和存储中起着至关...
在Android开发中,JSON(JavaScript Object Notation)是一种常用的数据交换格式,因其轻量级、易读易写的特点,被广泛应用于服务器与客户端之间的数据通信。这篇博客详细讲解了如何在Android环境中对JSON数据进行...
总之,JSON在Android开发中扮演着至关重要的角色,无论是在网络通信、数据存储还是对象序列化方面。熟悉并熟练掌握JSON的生成和解析技巧,对于提升Android应用的开发效率和质量有着积极的影响。
总结起来,这个Android HTTP通信例子展示了如何在Android应用中使用HTTP协议与Java Web服务器进行交互,包括JSON数据的传递、文件的上传和下载,以及错误处理等关键环节。理解并掌握这些技术对于开发功能丰富的...
在Android开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于客户端与服务端之间的数据传输。GSON是Google提供的一个Java库,它可以将Java对象转换为等效的JSON字符串,反之亦然,使得...
在IT行业中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于服务器与客户端之间的数据通信,尤其在Web服务中极为常见。而Gson是Google开发的一个Java库,用于将Java对象转换为JSON格式...
Android客户端接收到响应后,再次解析JSON,将数据呈现给用户。 在描述中提到,此示例可能是对网上的教程进行了改进,这意味着可能包括了错误修正、性能优化或者功能增强。提供的网址可能详细解释了如何实现这一...
在Android开发中,数据交换和存储常常涉及到JSON格式,它是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。本文将详细介绍两种常用的Android JSON解析库——Gson和Fast-json,以及它们的...
在Android应用开发中,JSON(JavaScript Object Notation)是一种常用的数据交换格式,它简洁、易于读写,并且被广泛应用于网络通信与数据存储。本项目是一个基于Eclipse IDE的Android小程序,专门展示了如何在...
本篇文章将深入探讨Android环境下JSON数据的读写方法。 一、JSON数据格式 JSON数据格式基于JavaScript语法,但独立于语言,具有以下基本结构: 1. 对象(Object):以花括号 `{}` 包裹,键值对以逗号分隔,键(Key...
在Android中,JSON常用来与服务器进行数据交互,实现客户端与服务端之间的RPC(Remote Procedure Call)通信。Android JSON RPC 0.zip 包含了Android JSON的实例,覆盖了服务端和客户端的实现,这对于理解JSON在...
在Android开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于应用程序与...理解并掌握这些知识点对于Android开发者来说至关重要,因为JSON已经成为移动应用与服务器通信的标准数据格式。
在Android客户端,实现与服务器端的通信主要包括发送HTTP请求和解析返回的JSON数据。下面是一些常用的方法和技巧: 1. **使用HttpURLConnection或第三方库**:在Android中,可以使用`HttpURLConnection`类直接发送...