java实践基础1) json信息提取

目录

      • 1.目标需求
      • 2.代码编辑
      • 3.结果呈现
      • 4.Gson资源jar包

1.目标需求

在这里插入图片描述

2.代码编辑

package com.json;

import java.sql.*;
import java.util.*;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;


public class jsonFrom213 { //解析json结构树

    public static void main(String[] args) {//执行主方法
        jsonFrom213 h = new jsonFrom213();//创建本类对象
        con = h.getConnection();//与数据库建立连接
        lis = queryData();//sql查询返回结果集
        getData = jsonGet(lis);//输出json解析结果列表
        distinctData(getData);//输出json解析结果列表去重

    }

    //(一)代码块(0)声明对象
    private static Connection con; //声明 Connection 对象
    private static PreparedStatement pStmt;//声明预处理 PreparedStatement 对象
    private static ResultSet res;//声明结果 ResultSet 对象
    private static ArrayList lis;//声明结果 ResultSet 对象
    private static ArrayList getData;//声明结果 ResultSet 对象

    private static String url = "jdbc:mysql://127.0.0.1:3306/digitalrm";// 协议:子协议://目标IP地址:端口/数据库  在这里test1是之前创建的数据库名
    private static String user = "dop_admin";
    private static String password = "dop_admin123";

    //(二)
    public Connection getConnection() {//建立返回值为 Connection 的方法

        //代码块(1):加载数据库驱动类
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            System.out.println("数据库驱动加载成功");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        //代码块(2):通过访问数据库的URL获取数据库连接对象
        try {
            con = DriverManager.getConnection(url, user, password);
            System.out.println("数据库连接成功"+"\n");
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return con;  //返回值为 Connection 的方法
    }


    //(三)代码块(3):运用SQL语句进行操作
    public static ArrayList queryData() {// 返回data_js结果集

        ArrayList lis = new ArrayList();

        try {   //mysql查询语句
            String sql = "SELECT * FROM irs_resources_apply limit 500";
            pStmt = con.prepareStatement(sql);
            res = pStmt.executeQuery();

            //代码块(4):得到结果集,运用SQL语句进行操作
            System.out.println("阶段1:读取数据");
            while (res.next()) {//如果当前语句不是最后一条,则进入循环

                lis.add(res.getString("data_json"));
                //System.out.println(res.getString("data_json"));

            }
            res.close();//释放资源
            pStmt.close();
        } catch (SQLException e) {//捕获异常
            e.printStackTrace();
        }
        System.out.println("queryData执行完毕!");
        return lis;
    }

    //(四)代码块(5):得到json数据信息
    public static ArrayList jsonGet(ArrayList lis) {

        ArrayList getData = new ArrayList();//目标输出列表

        System.out.println("\n"+"阶段2:执行jsonGet解析json数据");
        System.out.println("数据长度:"+lis.size());
        //System.out.println("解析数据内容:"););
        try {//代码块(6):解析json结构树

            for (int i = 0; i < lis.size(); i++) {

                String jstr = (String) lis.get(i); //json解析对象
                JsonParser parser = new JsonParser(); // 创建JsonParser对象,JsonParser用于将Json数据解析为JsonElement的解析树
                JsonElement jsonTree = parser.parse(jstr);//获得JsonElement的解析树

                if(jsonTree.isJsonObject()){    //循环json结构树:第一层
                    JsonObject jsonObject = jsonTree.getAsJsonObject(); //JsonObject可用于使用JSON字符串中的相应键来访问值
                    JsonElement f1 = jsonObject.get("applyElement");//使用其get()方法从中提取字段

                    if(f1 != null){  //循环json结构树:第二层,判断1)JsonElement f1是否为空
                        JsonArray f2arr = f1.getAsJsonArray(); // 转换成jsonArray
                        if (f2arr.get(0).isJsonObject()) { //判断2)jsonArray的元素是否为jsonObject
                            JsonObject f3obj = f2arr.get(0).getAsJsonObject();
                            JsonElement f3 = f3obj.get("projectName");
                            if (f3 != null){ // 判断3)JsonElement f3是否为空
                                getData.add(f3.toString());    //第二层解析加入目标列表
                            }
                        }
                    }
                }
            }

            //System.out.println(getData);//输出目标数据列表
            System.out.println("jsonGet执行完毕!"+"\n");//输出目标数据列表

        } catch (Exception e) {
            e.printStackTrace();
        }

        return getData;

    }

    //(五)
    public static void distinctData(ArrayList getData) {

        try{
            System.out.println("阶段3:json解析数据去重");
            HashSet hs = new HashSet(getData);//代码块(7):hashset()给arrayList()去重
            System.out.println(hs);

            System.out.println("distinctData执行完毕!");//输出目标数据列表

        } catch ( Exception e) {
            e.printStackTrace();
        }
    }

}

3.结果呈现

在这里插入图片描述

4.Gson资源jar包

在这里插入图片描述

链接:https://pan.baidu.com/s/1XQNmpHzsDYIez2MsIf-KTQ 
提取码:btj3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值