• Java-->Json解析网页数据


    --> 官方解析jar包: 链接:http://pan.baidu.com/s/1pKDnXKv 密码:694d

    --> 离线Json格式检测工具: 链接:http://pan.baidu.com/s/1eSHkrOe 密码:ju95

    --> HttpUtil 工具类

     1 package com.dragon.java.jsonwebdata;
     2 
     3 import java.io.IOException;
     4 import java.io.InputStream;
     5 import java.io.OutputStream;
     6 import java.net.HttpURLConnection;
     7 import java.net.URL;
     8 
     9 /**
    10  * 得到服务器响应的数据流的工具类
    11  * 
    12  * @author Auser
    13  * 
    14  */
    15 public class HttpUtil {
    16 
    17     public static InputStream getInputStreamByPost(String url, String parms) {
    18         try {
    19             HttpURLConnection conn = (HttpURLConnection) new URL(url)
    20                     .openConnection();
    21             conn.setReadTimeout(5000);
    22             conn.setConnectTimeout(5000);
    23             conn.setRequestMethod("POST");
    24             conn.setDoOutput(true);
    25 
    26             OutputStream outputStream = conn.getOutputStream();
    27             outputStream.write(parms.getBytes());
    28             if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
    29                 return conn.getInputStream();
    30             }
    31         } catch (IOException e) {
    32             e.printStackTrace();
    33         }
    34         return null;
    35     }
    36 }

    --> InputStreamUtil 工具类

     1 package com.dragon.java.jsonwebdata;
     2 
     3 import java.io.BufferedReader;
     4 import java.io.IOException;
     5 import java.io.InputStream;
     6 import java.io.InputStreamReader;
     7 
     8 /**
     9  * 将服务器响应数据流转换成String的工具类
    10  * 
    11  * @author Auser
    12  * 
    13  */
    14 public class InputStreamUtil {
    15 
    16     public static String inputStreamToString(InputStream is) {
    17         try (BufferedReader br = new BufferedReader(new InputStreamReader(is));) {
    18             String line = null;
    19             while ((line = br.readLine()) != null) {
    20                 return line;
    21             }
    22         } catch (IOException e) {
    23             e.printStackTrace();
    24         }
    25         return null;
    26     }
    27 }

    --> JsonUtil 工具类

    package com.dragon.java.jsonwebdata;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    /**
     * Json解析的工具类
     * 
     * @author Auser
     * 
     */
    public class JsonUtil {
        /**
         * 官方解析方法 --> 不管多复杂都可以解析,但是非常复杂!!!
         * 
         * @param json
         */
        public static void jsonParse(String json) {
            List<Detail> details = new ArrayList<>();
            try {
                JSONObject object = new JSONObject(json);
                if (object.getString("status").equals("000000")) {
                    if (object.getString("desc").equals("null")) {
                        details = JSONArray(details, object);
                        for (Detail detail : details) {
                            System.out.println(detail);
                        }
                    }
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * Json数组
         * 
         * @param details
         * @param object
         * @return List<Detail>
         * @throws JSONException
         */
        private static List<Detail> JSONArray(List<Detail> details,
                JSONObject object) throws JSONException {
            JSONArray array = object.getJSONArray("detail");
            for (int i = 0; i < array.length(); i++) {
                JSONObject object2 = array.getJSONObject(i);
                int id = object2.getInt("id");
                int xhid = object2.getInt("xhid");
                String author = object2.getString("author");
                String content = object2.getString("content");
                String picUrl = object2.getString("picUrl");
                String status = object2.getString("status");
                Detail detail = new Detail(id, xhid, author, content, picUrl,
                        status);
                details.add(detail);
            }
            return details;
        }
    }

    --> Test 测试类

    package com.dragon.java.jsonwebdata;
    
    import java.util.Scanner;
    
    /*
     * Json解析网页数据
     */
    public class Test {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入页数:");
            int currentPage = scanner.nextInt();
            System.out.println("请输入每页笑话数:");
            int size = scanner.nextInt();
    
            String url = "http://api.1-blog.com/biz/bizserver/xiaohua/list.do";
            String parms = "currentPage=" + currentPage + "&size=" + size;
            // 得到服务器响应的数据并转换成String
            String json = InputStreamUtil.inputStreamToString(HttpUtil
                    .getInputStreamByPost(url, parms));
            // Json解析
            JsonUtil.jsonParse(json);
        }
    }

    --> 写完发现用官方的解析方法,那是极复杂的...还是Gson方便!

    ************之前忘的Detail类************

      1 package com.dragon.java.hwgsonparse;
      2 
      3 public class Detail {
      4     private int id;
      5     private String city;
      6     private String county;
      7     private String date;
      8     private String day_conditon;
      9     private String day_wind;
     10     private String day_temperature;
     11     private String night_codition;
     12     private String night_wind;
     13     private String night_temperature;
     14     private long update_time;
     15 
     16     public Detail() {
     17         super();
     18     }
     19 
     20     public Detail(int id, String city, String county, String date,
     21             String day_conditon, String day_wind, String day_temperature,
     22             String night_codition, String night_wind, String night_temperature,
     23             long update_time) {
     24         super();
     25         this.id = id;
     26         this.city = city;
     27         this.county = county;
     28         this.date = date;
     29         this.day_conditon = day_conditon;
     30         this.day_wind = day_wind;
     31         this.day_temperature = day_temperature;
     32         this.night_codition = night_codition;
     33         this.night_wind = night_wind;
     34         this.night_temperature = night_temperature;
     35         this.update_time = update_time;
     36     }
     37 
     38     public int getId() {
     39         return id;
     40     }
     41 
     42     public void setId(int id) {
     43         this.id = id;
     44     }
     45 
     46     public String getCity() {
     47         return city;
     48     }
     49 
     50     public void setCity(String city) {
     51         this.city = city;
     52     }
     53 
     54     public String getCounty() {
     55         return county;
     56     }
     57 
     58     public void setCounty(String county) {
     59         this.county = county;
     60     }
     61 
     62     public String getDate() {
     63         return date;
     64     }
     65 
     66     public void setDate(String date) {
     67         this.date = date;
     68     }
     69 
     70     public String getDay_conditon() {
     71         return day_conditon;
     72     }
     73 
     74     public void setDay_conditon(String day_conditon) {
     75         this.day_conditon = day_conditon;
     76     }
     77 
     78     public String getDay_wind() {
     79         return day_wind;
     80     }
     81 
     82     public void setDay_wind(String day_wind) {
     83         this.day_wind = day_wind;
     84     }
     85 
     86     public String getDay_temperature() {
     87         return day_temperature;
     88     }
     89 
     90     public void setDay_temperature(String day_temperature) {
     91         this.day_temperature = day_temperature;
     92     }
     93 
     94     public String getNight_codition() {
     95         return night_codition;
     96     }
     97 
     98     public void setNight_codition(String night_codition) {
     99         this.night_codition = night_codition;
    100     }
    101 
    102     public String getNight_wind() {
    103         return night_wind;
    104     }
    105 
    106     public void setNight_wind(String night_wind) {
    107         this.night_wind = night_wind;
    108     }
    109 
    110     public String getNight_temperature() {
    111         return night_temperature;
    112     }
    113 
    114     public void setNight_temperature(String night_temperature) {
    115         this.night_temperature = night_temperature;
    116     }
    117 
    118     public long getUpdate_time() {
    119         return update_time;
    120     }
    121 
    122     public void setUpdate_time(long update_time) {
    123         this.update_time = update_time;
    124     }
    125 
    126     @Override
    127     public String toString() {
    128         return "Detail [id=" + id + ", city=" + city + ", county=" + county
    129                 + ", date=" + date + ", day_conditon=" + day_conditon
    130                 + ", day_wind=" + day_wind + ", day_temperature="
    131                 + day_temperature + ", night_codition=" + night_codition
    132                 + ", night_wind=" + night_wind + ", night_temperature="
    133                 + night_temperature + "]";
    134     }
    135 
    136 }
    Detail
  • 相关阅读:
    python:linux中升级python版本
    robot:当用例失败时执行关键字(发送短信)
    robot:根据条件主动判定用例失败或者通过
    robot:List变量的使用注意点
    python:动态参数*args
    robot:linux下安装robot环境
    robot:循环遍历数据库查询结果是否满足要求
    爬虫结果数据完整性校验
    ChromeDriver与chrome对应关系
    Spring系列之AOP
  • 原文地址:https://www.cnblogs.com/xmcx1995/p/5802438.html
Copyright © 2020-2023  润新知