JAVA_JSON_example
1 package cn.kjxy.JSON; 2 3 import java.util.List; 4 5 import org.json.JSONArray; 6 import org.json.JSONException; 7 import org.json.JSONObject; 8 9 /** 10 * 解析网络数据 11 * path:"http://interfacev5.vivame.cn/x1-interface-v5/json/newdatalist.json?platform=android&installversion=5.2.0&channelno=OPPOA2320480100&mid=0a0fec95ea3364f43798a33fc3616780&uid=3348521&sid=a27ef935-f451-46ad-962b-0a48c47d47ae&type=-1&id=-1&category=-1&ot=0&nt=0" 12 * 步骤:1.获取路径 13 * 2.通过HttpClient从该网络路径获取json数据 14 * 3.通过bejson工具进行json校验 15 * 4.创建相关对象或数组进行json解析 16 * @author Administrator 17 * 注意: 需导入HttpClient的三个jar包及JSON的jar包 18 */ 19 20 class Item{ 21 private int stypeid;//": 3, 22 private String stypename;//: "图集", 23 private String title;//": "暴雨致赣南5.3万人受灾", 24 private String img;//": "http://stcv5.vivame.cn/pmsV5/upload/file/20160323/f116d696-c777-43a0-a709-d044dec48900.jpg", 25 public int getStypeid() { 26 return stypeid; 27 } 28 public void setStypeid(int stypeid) { 29 this.stypeid = stypeid; 30 } 31 public String getStypename() { 32 return stypename; 33 } 34 public void setStypename(String stypename) { 35 this.stypename = stypename; 36 } 37 public String getTitle() { 38 return title; 39 } 40 public void setTitle(String title) { 41 this.title = title; 42 } 43 public String getImg() { 44 return img; 45 } 46 public void setImg(String img) { 47 this.img = img; 48 } 49 @Override 50 public String toString() { 51 return "Items [stypeid=" + stypeid + ", stypename=" + stypename 52 + ", title=" + title + ", img=" + img + "]"; 53 } 54 55 } 56 public class Demo2 { 57 public static void main(String[] args) { 58 String path = "http://interfacev5.vivame.cn/x1-interface-v5/json/newdatalist.json?platform=android&installversion=5.2.0&channelno=OPPOA2320480100&mid=0a0fec95ea3364f43798a33fc3616780&uid=3348521&sid=a27ef935-f451-46ad-962b-0a48c47d47ae&type=-1&id=-1&category=-1&ot=0&nt=0"; 59 //应用自制工具类解析JSON数据 60 String json = HttpHelpers.getResourceByInternet(path); 61 parserJSON(json); 62 } 63 64 private static void parserJSON(String json) { 65 // TODO Auto-generated method stub 66 try { 67 //创建JSON对象 68 JSONObject jsonObject = new JSONObject(json); 69 JSONObject data = jsonObject.getJSONObject("data"); 70 JSONArray feedList = data.getJSONArray("feedlist"); 71 for (int i = 0; i < feedList.length(); i++) { 72 JSONObject jsonObject2 = feedList.getJSONObject(i); 73 JSONArray items = jsonObject2.getJSONArray("items"); 74 for (int j = 0; j < items.length(); j++) { 75 JSONObject jsonObject3 = items.getJSONObject(j); 76 Item item = new Item(); 77 item.setStypeid(jsonObject3.getInt("stypeid")); 78 item.setStypename(jsonObject3.getString("stypename")); 79 item.setTitle(jsonObject3.getString("title")); 80 item.setImg(jsonObject3.getString("img")); 81 System.out.println(item); 82 } 83 84 } 85 } catch (JSONException e) { 86 // TODO Auto-generated catch block 87 e.printStackTrace(); 88 } 89 } 90 }
1 package cn.kjxy.JSON; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import java.io.BufferedReader; 6 import java.io.ByteArrayOutputStream; 7 import java.io.FileNotFoundException; 8 import java.io.FileOutputStream; 9 import java.io.IOException; 10 import java.util.ArrayList; 11 import java.util.HashMap; 12 import java.util.List; 13 import java.util.Map; 14 15 import org.apache.http.HttpEntity; 16 import org.apache.http.HttpResponse; 17 import org.apache.http.NameValuePair; 18 import org.apache.http.client.HttpClient; 19 import org.apache.http.client.entity.UrlEncodedFormEntity; 20 import org.apache.http.client.methods.HttpGet; 21 import org.apache.http.client.methods.HttpPost; 22 import org.apache.http.impl.client.DefaultHttpClient; 23 import org.apache.http.message.BasicNameValuePair; 24 import org.apache.http.util.EntityUtils; 25 26 /** 27 * 请求网络的工具类 28 * 29 * @author Administrator 30 * 31 */ 32 public class HttpHelpers { 33 34 /** 35 * 下载图片 保存到byte类型的数组中 36 * 37 * @param path 38 * 地址 39 * @return byte[] 40 */ 41 public static byte[] downLoadImg(String path) { 42 BufferedInputStream bis = null; 43 try { 44 // 1,创建HttpClient对象 Android6.0之前可以使用 45 HttpClient httpClient = new DefaultHttpClient(); 46 // 2,创建请求对象+指定地址 47 HttpGet httpGet = new HttpGet(path); 48 // 3,执行请求 获得HttpResponse对象 49 HttpResponse response = httpClient.execute(httpGet); 50 // 4,获得响应码 51 int code = response.getStatusLine().getStatusCode(); 52 if (code == 200) { 53 // 5,得到响应的HttpEntity对象 54 HttpEntity responseEntity = response.getEntity(); 55 // 方法一 56 // bis = new BufferedInputStream(responseEntity.getContent()); 57 // byte b[] = toByteArray(bis); 58 // return b; 59 60 // 方法二 61 return EntityUtils.toByteArray(responseEntity); 62 63 } 64 65 } catch (IOException e) { 66 // TODO Auto-generated catch block 67 e.printStackTrace(); 68 } finally { 69 if (bis != null) { 70 try { 71 bis.close(); 72 } catch (IOException e) { 73 // TODO Auto-generated catch block 74 e.printStackTrace(); 75 } 76 } 77 } 78 79 return null; 80 81 } 82 83 /** 84 * 把图片下载到本地磁盘 85 * 86 * @param path 87 */ 88 public static void downLoadImgToLocal(String path) { 89 BufferedInputStream bis = null; 90 BufferedOutputStream boStream = null; 91 try { 92 // 1,创建HttpClient对象 Android6.0之前可以使用 93 HttpClient httpClient = new DefaultHttpClient(); 94 // 2,创建请求对象+指定地址 95 HttpGet httpGet = new HttpGet(path); 96 // 3,执行请求 获得HttpResponse对象 97 HttpResponse response = httpClient.execute(httpGet); 98 // 4,获得响应码 99 int code = response.getStatusLine().getStatusCode(); 100 if (code == 200) { 101 // 5,得到响应的HttpEntity对象 102 HttpEntity responseEntity = response.getEntity(); 103 // 方法一 104 // bis = new BufferedInputStream(responseEntity.getContent()); 105 // byte b[] = toByteArray(bis); 106 107 // 方法二 108 byte b[] = EntityUtils.toByteArray(responseEntity); 109 String endsWith = path.substring(path.lastIndexOf(".")); 110 boStream = new BufferedOutputStream(new FileOutputStream((int) (Math.random() * 100) + endsWith)); 111 boStream.write(b); 112 113 } 114 115 } catch (IOException e) { 116 // TODO Auto-generated catch block 117 e.printStackTrace(); 118 } finally { 119 if (bis != null) { 120 try { 121 bis.close(); 122 } catch (IOException e) { 123 // TODO Auto-generated catch block 124 e.printStackTrace(); 125 } 126 } 127 if (boStream != null) { 128 try { 129 boStream.close(); 130 } catch (IOException e) { 131 // TODO Auto-generated catch block 132 e.printStackTrace(); 133 } 134 } 135 } 136 137 } 138 139 /** 140 * 从互联网获取文本 json xml 141 * 142 * @param path 143 * 地址 144 * @return 获取到的文本数据 145 */ 146 147 public static String getResourceByInternet(String path) { 148 BufferedReader bReader = null; 149 try { 150 // 1,创建HttpClient对象 Android6.0之前可以使用 151 HttpClient httpClient = new DefaultHttpClient(); 152 // 2,创建请求对象+指定地址 153 HttpGet httpGet = new HttpGet(path); 154 // 3,执行请求 获得HttpResponse对象 155 HttpResponse response = httpClient.execute(httpGet); 156 // 4,获得响应码 157 int code = response.getStatusLine().getStatusCode(); 158 if (code == 200) { 159 // 得到HttpEntity对象 160 HttpEntity responseEntity = response.getEntity(); 161 // 方法一 162 // bReader = new BufferedReader(new 163 // InputStreamReader(responseEntity.getContent())); 164 // StringBuilder sbBuilder = new StringBuilder(); 165 // String line = null; 166 // while ((line = bReader.readLine()) != null) { 167 // sbBuilder.append(line); 168 // } 169 // 170 // return sbBuilder.toString(); 171 172 // 方法二 173 return EntityUtils.toString(responseEntity); 174 175 } 176 177 } catch (IOException e) { 178 // TODO Auto-generated catch block 179 e.printStackTrace(); 180 } finally { 181 if (bReader != null) { 182 try { 183 bReader.close(); 184 } catch (IOException e) { 185 // TODO Auto-generated catch block 186 e.printStackTrace(); 187 } 188 } 189 } 190 191 return null; 192 193 } 194 195 public static byte[] toByteArray(BufferedInputStream bufferedInputStream) { 196 byte b[] = new byte[1024 * 1024]; 197 int len = 0; 198 ByteArrayOutputStream baos = new ByteArrayOutputStream(); 199 try { 200 while ((len = bufferedInputStream.read(b)) != -1) { 201 baos.write(b, 0, len); 202 } 203 } catch (IOException e) { 204 // TODO Auto-generated catch block 205 e.printStackTrace(); 206 } 207 208 return baos.toByteArray(); 209 210 } 211 212 public static String upLoadData(String path, Map<String, String> map) { 213 BufferedReader bReader = null; 214 try { 215 // 1,创建HttpClient对象 Android6.0之前可以使用 216 HttpClient httpClient = new DefaultHttpClient(); 217 // 2,创建请求对象+指定地址 218 HttpPost httpPost = new HttpPost(path); 219 // 设置用于发送到服务端的参数 220 List<NameValuePair> list = new ArrayList<NameValuePair>(); 221 222 for (String string : map.keySet()) { 223 list.add(new BasicNameValuePair(string, map.get(string))); 224 } 225 HttpEntity requestEntity = new UrlEncodedFormEntity(list, "gbk"); 226 httpPost.setEntity(requestEntity); 227 228 // 3,执行请求 获得HttpResponse对象 229 HttpResponse response = httpClient.execute(httpPost); 230 // 4,获得响应码 231 int code = response.getStatusLine().getStatusCode(); 232 if (code == 200) { 233 // 得到HttpEntity对象 234 HttpEntity responseEntity = response.getEntity(); 235 // 方法一 236 // bReader = new BufferedReader(new 237 // InputStreamReader(responseEntity.getContent())); 238 // StringBuilder sbBuilder = new StringBuilder(); 239 // String line = null; 240 // while ((line = bReader.readLine()) != null) { 241 // sbBuilder.append(line); 242 // } 243 // 244 // return sbBuilder.toString(); 245 246 // 方法二 247 return EntityUtils.toString(responseEntity, "gbk"); 248 249 } 250 251 } catch (IOException e) { 252 // TODO Auto-generated catch block 253 e.printStackTrace(); 254 } finally { 255 if (bReader != null) { 256 try { 257 bReader.close(); 258 } catch (IOException e) { 259 // TODO Auto-generated catch block 260 e.printStackTrace(); 261 } 262 } 263 } 264 265 return null; 266 267 } 268 269 public static void main(String[] args) { 270 byte b[] = downLoadImg("http://images.china.cn/attachement/jpg/site1000/20140313/844bf52c7d7c148b8abc05.jpg"); 271 BufferedOutputStream bufferedOutputStream; 272 try { 273 bufferedOutputStream = new BufferedOutputStream(new FileOutputStream("ceo.jpg")); 274 // bufferedOutputStream.write(b); 275 276 } catch (FileNotFoundException e1) { 277 // TODO Auto-generated catch block 278 e1.printStackTrace(); 279 } catch (IOException e) { 280 // TODO Auto-generated catch block 281 e.printStackTrace(); 282 } 283 284 // downLoadImgToLocal("http://images.china.cn/attachement/jpg/site1000/20140313/844bf52c7d7c148b8abc05.jpg"); 285 286 // System.out.println(getResourceByInternet("http://www.doukantv.com/api/hot/?type=movie&cli=ipad&sys_ver=7.1.1&ver=2.1")); 287 Map<String, String> map = new HashMap<String, String>(); 288 map.put("uname", "张三"); 289 map.put("pwd", "admin"); 290 System.out.println(upLoadData("http://172.20.136.5:8080/2016_05_27_server/login", map)); 291 292 } 293 294 }