获取 JSON 数据并解析

 import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List; import org.json.JSONArray;
import org.json.JSONObject; import com.wangjialin.internet.json.domain.News;
import com.wangjialin.internet.json.utils.StreamTool; public class NewsService { /**
* 获取最新视频资讯
* @return
* @throws Exception
*/
public static List<News> getJSONLastNews() throws Exception{ String path = "http://192.168.1.103:8080/ServerForJSON/NewsListServlet";
HttpURLConnection conn = (HttpURLConnection) new URL(path).openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET"); if(conn.getResponseCode() == 200){
InputStream json = conn.getInputStream();
return parseJSON(json);
}
return null;
} private static List<News> parseJSON(InputStream jsonStream) throws Exception{ List<News> list = new ArrayList<News>();
byte[] data = StreamTool.read(jsonStream);
String json = new String(data);
JSONArray jsonArray = new JSONArray(json); for(int i = 0; i < jsonArray.length() ; i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
int id = jsonObject.getInt("id");
String title = jsonObject.getString("title");
int timelength = jsonObject.getInt("timelength");
list.add(new News(id, title, timelength));
}
return list;
}
}

StreamTool

 import java.io.ByteArrayOutputStream;
import java.io.InputStream; public class StreamTool {
/**
* 从流中读取数据
* @param inStream
* @return
*/
public static byte[] read(InputStream inStream) throws Exception{ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0; while((len = inStream.read(buffer)) != -1){
outputStream.write(buffer, 0, len);
} inStream.close();
return outputStream.toByteArray();
}
}

显示

 public class MainActivity extends Activity {
/** Called when the activity is first created. */
List<News> newes;
List<HashMap<String, Object>> data = null;;
String length; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.main);
ListView listView = (ListView) this.findViewById(R.id.listView); length = this.getResources().getString(R.string.length); try{
newes = NewsService.getJSONLastNews();
data = new ArrayList<HashMap<String,Object>>();
for(News news : newes){
HashMap<String, Object> item = new HashMap<String, Object>();
item.put("id", news.getId());
item.put("title", news.getTitle());
item.put("timelength", length + news.getTimelength());
data.add(item);
} SimpleAdapter adapter = new SimpleAdapter(this,
data, R.layout.item,
new String[]{"title", "timelength"},
new int[]{R.id.title, R.id.timelength}
);
listView.setAdapter(adapter);
}catch(Exception e)
{
e.printStackTrace();
};
}
}

Android 开发工具类 25_getJSON的更多相关文章

  1. Android开发工具类

    7种无须编程的DIY开发工具 你知道几个? 现如今,各种DIY开发工具不断的出现,使得企业和个人在短短几分钟内就能完成应用的创建和发布,大大节省了在时间和资金上的投入.此外,DIY工 具的出现,也帮助 ...

  2. android开发工具类之获得WIFI IP地址或者手机网络IP

    有的时候我们需要获得WIFI的IP地址获得手机网络的IP地址,这是一个工具类,专门解决这个问题,这里需要两个权限: <uses-permission android:name="and ...

  3. android开发工具类总结(一)

    一.日志工具类 Log.java public class L { private L() { /* 不可被实例化 */ throw new UnsupportedOperationException ...

  4. Android 开发工具类 35_PatchUtils

    增量更新工具类[https://github.com/cundong/SmartAppUpdates] import java.io.File; import android.app.Activity ...

  5. Android 开发工具类 13_ SaxService

    网络 xml 解析方式 package com.example.dashu_saxxml; import java.io.IOException; import java.io.InputStream ...

  6. Android 开发工具类 06_NetUtils

    跟网络相关的工具类: 1.判断网络是否连接: 2.判断是否是 wifi 连接: 3.打开网络设置界面: import android.app.Activity; import android.cont ...

  7. Android 开发工具类 03_HttpUtils

    Http 请求的工具类: 1.异步的 Get 请求: 2.异步的 Post 请求: 3.Get 请求,获得返回数据: 4.向指定 URL 发送 POST方法的请求. import java.io.Bu ...

  8. Android 开发工具类 19_NetworkStateReceiver

    检测网络状态改变类: 1.注册网络状态广播: 2.检查网络状态: 3.注销网络状态广播: 4.获取当前网络状态,true为网络连接成功,否则网络连接失败: 5.注册网络连接观察者: 6.注销网络连接观 ...

  9. Android 开发工具类 27_多线程下载大文件

    多线程下载大文件时序图 FileDownloader.java package com.wangjialin.internet.service.downloader; import java.io.F ...

随机推荐

  1. 2017 pycharm 激活码

    BIG3CLIK6F-eyJsaWNlbnNlSWQiOiJCSUczQ0xJSzZGIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...

  2. post异步请求

    //创建url NSURL *url = [[NSURL alloc] initWithString:@"http://api.hudong.com/iphonexml.do"]; ...

  3. struts2从浅之深(一)简介

    一.Struts2简介 1.Struts2概述                    Struts2是Apache发行的MVC开源框架.注意:它只是表现层(MVC)框架. M:model-----数据 ...

  4. C++中的矩阵运算

    C++中的矩阵运算 1. 2阶矩阵的逆矩阵公式

  5. Tomcat服务器(一)

    一.tomcat目录中重要的文件: bin 存放启动和关闭的脚本 conf  存放配置文件 logs 日志文件 webapps 存放部署的项目 work 工作目录 Web应用开发好后,若想供外界访问, ...

  6. List<T>用法

    所属命名空间:System.Collections.Generic public class List<T> : IList<T>, ICollection<T>, ...

  7. Visual Studio模板

    转载自MSDN,此文仅作参考. http://msdn.microsoft.com/zh-cn/library/6db0hwky(VS.80).aspx 1. 如何导入“项目模板(Project Te ...

  8. LeetCode134:Gas Station

    题目: There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. ...

  9. dorado7-发布

    1.首先将configure.properties中Debug删除 2.eclipse自带的打包方式进行打包 2.1 next==>选择打包文件存放的路径==>finish==>xx ...

  10. 解决oninput在输入中文时,会获取拼音的问题

    (1)起因:在今天做项目测试的时候发现的问题,在用微软自带的输入法的时候,输入中文,文本框会获得拼音 如图所示: (2)解决办法:经过一段时间的百度查找,最后通过这篇文章找到了解决的方法,这里给出网址 ...