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 }
原文地址:https://www.cnblogs.com/fangg/p/5545215.html