获取 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. GoogleStyle格式化代码

    <div class="iteye-blog-content-contain" style="font-size: 14px"></div&g ...

  2. 201709013工作日记--static理解 && abstract

    1.关于viewHolder设置成static的讨论 一般情况下是尽量不要使用static关键字,因为static一旦有引用变量指向了变量,使用完毕后而没有设置null,就会造成内存泄露,而且很难排查 ...

  3. 几个经典的数学库之一学习---VCGlib(1)

    1. VCG Libary是Visulization and Computer Graphics Libary(可视化与计算机图形学库)的缩写,是一个开源的C++模板库,用于三角网格和四面体网格的控制 ...

  4. OpenGL模型视图变换、投影变换、视口变换的理解

    OpenGL中不设置模型,投影,视口,所绘制的几何图形的坐标只能是-1到1(X轴向右,Y轴向上,Z轴垂直屏幕向外). 产生目标场景的过程类似于用照相机进行拍照: (1)把照相机固定在三角架上,并让他对 ...

  5. Paxos与zookeeper

    1,什么是Paxos算法? Paxos算法是分布式计算领域中一个非常重要的算法,主要解决分布式系统如何就某个值(决议)达成一致的问题.一个典型的场景是分布式数据库的一致问题:如果分布式数据库的各个节点 ...

  6. matlab中使用正弦波合成方波(带动画)

    x=:*pi; :: s=; ::step s = s+/i*sin(i*x); end plot(s);set(figure(),'visible','off'); filename=[num2st ...

  7. DBCC--SHRINKDATABASE

    --DBCC SHRINKDATABASE --收缩数据库 --USAGE: dbcc SHRINKDATABASE ( { 'database_name' | database_id | 0 } [ ...

  8. 设计模式之迭代器模式(Iterator Pattern)

    一.什么是迭代器模式? 用迭代器来封装集合对象的遍历细节,使调用者能够通过统一的接口来实现对集合的遍历 迭代器也给集合对象提供了一定的保护,想要遍历集合,直接调用迭代器的方法就好了,我们不知道也不必知 ...

  9. JQuery 的一个轻量级 Guid 字符串拓展插件.

    (function ($) { function guid(g) { var arr = new Array(); //存放32位数值的数组 if (typeof (g) == "strin ...

  10. python salt 实现windows账户自动化

    import random import string import json import logging import time import os import sys def usage(): ...