Java初学者如何实现一个基础的股票查询工具

来源:个人站长网作者:长沙网站建设头衔:草根站长
导读:本期聚焦于小伙伴创作的《Java初学者如何实现一个基础的股票查询工具》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Java初学者如何实现一个基础的股票查询工具》有用,将其分享出去将是对创作者最好的鼓励。

Java初学者实现基础的股票查询工具,核心是通过调用公开的股票数据接口获取信息,再对返回的数据进行解析和展示,整个过程可以覆盖Java基础语法、网络请求、数据解析等多个核心知识点,适合用来巩固学习成果。

Java初学者如何实现一个基础的股票查询工具

实现前的准备

首先需要准备一个公开的股票数据接口,这里选择免费的股票数据接口,接口返回格式为JSON,方便后续解析。同时需要了解Java中发送HTTP请求的方式,以及JSON数据的解析方法,JDK本身没有内置JSON解析功能,我们可以引入简单的JSON解析依赖,或者使用JDK自带的HttpURLConnection发送请求,再手动解析简单的JSON数据。

核心实现步骤

1. 发送HTTP请求获取股票数据

我们需要封装一个方法,接收股票代码作为参数,向数据接口发送请求,获取返回的JSON字符串。这里使用HttpURLConnection实现网络请求,避免使用第三方依赖,更符合初学者的学习场景。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class StockQueryUtil {
    // 股票数据接口地址,将股票代码拼接到url中
    private static final String API_URL = "http://api.ipipp.com/stock/query?code=";

    /**
     * 发送请求获取股票数据
     * @param stockCode 股票代码
     * @return 接口返回的JSON字符串
     */
    public static String getStockData(String stockCode) {
        StringBuilder result = new StringBuilder();
        HttpURLConnection connection = null;
        BufferedReader reader = null;
        try {
            URL url = new URL(API_URL + stockCode);
            connection = (HttpURLConnection) url.openConnection();
            // 设置请求方法为GET
            connection.setRequestMethod("GET");
            // 设置连接超时时间
            connection.setConnectTimeout(5000);
            // 设置读取超时时间
            connection.setReadTimeout(5000);

            // 读取返回数据
            reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
            String line;
            while ((line = reader.readLine()) != null) {
                result.append(line);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 关闭资源
            if (reader != null) {
                try {
                    reader.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (connection != null) {
                connection.disconnect();
            }
        }
        return result.toString();
    }
}

2. 解析JSON数据

接口返回的JSON数据通常包含股票名称、当前价格、涨跌幅等字段,我们需要解析这些字段并封装成Java对象,方便后续操作。这里使用简单的字符串分割方式解析基础JSON结构,避免引入第三方JSON库,降低学习难度。

public class StockInfo {
    // 股票名称
    private String name;
    // 股票代码
    private String code;
    // 当前价格
    private double price;
    // 涨跌幅
    private double changePercent;

    // 构造方法、getter和setter
    public StockInfo(String name, String code, double price, double changePercent) {
        this.name = name;
        this.code = code;
        this.price = price;
        this.changePercent = changePercent;
    }

    public String getName() {
        return name;
    }

    public String getCode() {
        return code;
    }

    public double getPrice() {
        return price;
    }

    public double getChangePercent() {
        return changePercent;
    }
}

public class JsonParser {
    /**
     * 解析JSON字符串为StockInfo对象
     * @param jsonStr 接口返回的JSON字符串
     * @return 解析后的StockInfo对象
     */
    public static StockInfo parseStockJson(String jsonStr) {
        if (jsonStr == null || jsonStr.isEmpty()) {
            return null;
        }
        try {
            // 假设返回的JSON格式为{"name":"贵州茅台","code":"600519","price":1800.50,"changePercent":2.35}
            // 去掉大括号
            String content = jsonStr.substring(jsonStr.indexOf("{") + 1, jsonStr.lastIndexOf("}"));
            String[] fields = content.split(",");
            String name = "";
            String code = "";
            double price = 0.0;
            double changePercent = 0.0;
            for (String field : fields) {
                String[] keyValue = field.split(":");
                String key = keyValue[0].replace(""", "").trim();
                String value = keyValue[1].replace(""", "").trim();
                if ("name".equals(key)) {
                    name = value;
                } else if ("code".equals(key)) {
                    code = value;
                } else if ("price".equals(key)) {
                    price = Double.parseDouble(value);
                } else if ("changePercent".equals(key)) {
                    changePercent = Double.parseDouble(value);
                }
            }
            return new StockInfo(name, code, price, changePercent);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}

3. 实现用户交互逻辑

最后需要实现一个简单的用户交互界面,支持用户输入股票代码,调用前面的方法查询数据并展示结果,这里使用控制台交互的方式,适合初学者理解。

import java.util.Scanner;

public class StockQueryTool {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("欢迎使用基础股票查询工具");
        while (true) {
            System.out.println("n请输入要查询的股票代码(输入exit退出):");
            String stockCode = scanner.nextLine();
            if ("exit".equalsIgnoreCase(stockCode)) {
                System.out.println("感谢使用,再见");
                break;
            }
            // 获取股票数据
            String jsonData = StockQueryUtil.getStockData(stockCode);
            if (jsonData == null || jsonData.isEmpty()) {
                System.out.println("未查询到该股票的信息,请检查股票代码是否正确");
                continue;
            }
            // 解析数据
            StockInfo stockInfo = JsonParser.parseStockJson(jsonData);
            if (stockInfo == null) {
                System.out.println("数据解析失败,请稍后重试");
                continue;
            }
            // 展示结果
            System.out.println("股票名称:" + stockInfo.getName());
            System.out.println("股票代码:" + stockInfo.getCode());
            System.out.println("当前价格:" + stockInfo.getPrice() + " 元");
            System.out.println("涨跌幅:" + stockInfo.getChangePercent() + "%");
        }
        scanner.close();
    }
}

功能扩展建议

完成基础功能后,初学者可以尝试扩展工具的功能,比如添加股票历史价格查询、增加本地缓存减少接口请求次数、支持批量查询多只股票、将查询结果保存到本地文件等。这些扩展可以进一步提升对Java集合、文件操作、缓存机制等知识点的掌握程度。

注意事项

  • 公开股票数据接口可能有请求频率限制,不要短时间内发送大量请求,避免被接口封禁。
  • 实际开发中建议使用成熟的第三方HTTP客户端和JSON解析库,比如OkHttp、Jackson等,提升代码的稳定性和开发效率。
  • 如果接口返回的数据格式发生变化,需要同步调整JSON解析的逻辑,避免解析失败。

Java股票查询工具HTTP请求JSON解析集合操作修改时间:2026-07-14 05:36:27

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。