首页 >Java >java教程 >如何在没有外部库的情况下在 Java 中将 URI 查询字符串解析为名称-值对?

如何在没有外部库的情况下在 Java 中将 URI 查询字符串解析为名称-值对?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-24 21:34:33323浏览

How to Parse URI Query Strings into Name-Value Pairs in Java Without External Libraries?

将 URI 字符串解析为名称-值集合

简介

将 URI 字符串解析为其组成元素是 Web 开发中的一项常见任务。为了完成此任务,Java 提供了多种内置功能和外部库。本文重点介绍基于 Java 的解决方案,用于在不使用外部依赖项的情况下解析 URI 字符串。

解析查询参数

URI 的查询部分包含一系列由'&' 特点。要将这些参数解析为映射,可以使用以下方法:

public static Map<String, String> splitQuery(URL url) throws UnsupportedEncodingException {
    Map<String, String> query_pairs = new LinkedHashMap<>();
    String query = url.getQuery();
    String[] pairs = query.split("&");
    for (String pair : pairs) {
        int idx = pair.indexOf("=");
        query_pairs.put(URLDecoder.decode(pair.substring(0, idx), "UTF-8"), URLDecoder.decode(pair.substring(idx + 1), "UTF-8"));
    }
    return query_pairs;
}

示例用法

使用给定的 URL 作为示例:

https://google.com.ua/oauth/authorize?client_id=SS&response_type=code&scope=N_FULL&access_type=offline&redirect_uri=http://localhost/Callback

The splitQuery 方法将返回以下映射:

{client_id=SS, response_type=code, scope=N_FULL, access_type=offline, redirect_uri=http://localhost/Callback}

编码注意事项

该方法包括 URL 解码,以处理参数值中存在的任何特殊字符。

使用同一键处理多个参数

已提供该方法的更新版本处理多个参数具有相同键的情况。此版本使用 Map> 。跟踪给定键的所有值。

Java 8 版本

还提供了该方法的 Java 8 实现,它利用 lambda 表达式和流来提供简洁高效的解决方案。

结论

通过使用 splitQuery 方法,您可以轻松地将 URI 查询字符串解析为其组成的名称-值对,而无需依赖外部图书馆。此功能对于各种 Web 开发任务至关重要,例如提取用户输入或从 RESTful 端点检索参数。

以上是如何在没有外部库的情况下在 Java 中将 URI 查询字符串解析为名称-值对?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn