• 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 }
  • 相关阅读:
    Windows系统下八大具有高逼格的DOS命令之一【ping】
    NOIP初赛 之 逻辑运算
    动态规划 —— 背包问题一 专项研究学习
    使用前端原生 js,贪吃蛇小游戏
    纯html+css制作3D立方体和动画效果
    css3实现3D动画轮播图
    原生js的弹力小球
    小球的问题
    早期练手:功能相对比较完善的 js 计算器
    自动布局简介
  • 原文地址:https://www.cnblogs.com/fangg/p/5545215.html
Copyright © 2020-2023  润新知