Maison > Java > javaDidacticiel > Comment analyser efficacement une chaîne URI dans une collection nom-valeur en Java ?

Comment analyser efficacement une chaîne URI dans une collection nom-valeur en Java ?

Linda Hamilton
Libérer: 2024-12-19 09:28:10
original
674 Les gens l'ont consulté

How to Efficiently Parse a URI String into a Name-Value Collection in Java?

Analyser une chaîne URI dans une collection nom-valeur

La tâche d'analyse URI consiste à extraire les paramètres individuels et leurs valeurs correspondantes à partir d'une requête URI chaîne. Il s'agit d'un besoin courant lorsqu'il s'agit de traiter des URL dans des applications Web et des requêtes API.

Pour analyser une chaîne URI dans une collection nom-valeur en Java, envisagez les options suivantes :

  • Utilisation d'une bibliothèque tierce :

Des bibliothèques comme Apache Commons Lang ou Google Guava fournissent des méthodes pour l'analyse d'URI. Ces bibliothèques offrent une approche concise et pratique, gérant le décodage d'URL et d'autres tâches courantes.

  • Analyse manuelle sans bibliothèque :

Si vous préférez une approche plus pratique, vous pouvez implémenter votre propre logique d'analyse comme suit :

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

Cette méthode divise la chaîne de requête en des paires individuelles, les décode par URL et les stocke dans une carte. Vous pouvez récupérer des valeurs individuelles à l'aide de map.get("paramName").

Gestion du décodage d'URL :

N'oubliez pas que les valeurs de la chaîne de requête peuvent être codées en URL. Vous pouvez utiliser la classe URLDecoder pour les convertir en texte brut.

Gestion des cas particuliers :

La logique d'analyse ci-dessus suppose que chaque paramètre a une valeur unique. Cependant, certains URI autorisent plusieurs valeurs pour le même paramètre. Pour gérer ce cas, vous pouvez modifier la méthode d'analyse pour créer une carte où chaque paramètre correspond à une liste de valeurs.

API Java 8 Stream :

En Java 8, vous pouvez utiliser des flux pour simplifier le processus d'analyse. L'extrait de code suivant illustre cette approche :

public Map<String, List<String>> splitQuery(URL url) {
    if (Strings.isNullOrEmpty(url.getQuery())) {
        return Collections.emptyMap();
    }
    return Arrays.stream(url.getQuery().split("&"))
            .map(this::splitQueryParameter)
            .collect(Collectors.groupingBy(SimpleImmutableEntry::getKey, LinkedHashMap::new, mapping(Map.Entry::getValue, toList())));
}
Copier après la connexion

Cette version de la méthode renvoie une carte où chaque clé représente un paramètre et la valeur correspondante est une liste de valeurs de paramètres.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal