>Java >java지도 시간 >Java에서 URI 문자열을 이름-값 컬렉션으로 효율적으로 구문 분석하는 방법은 무엇입니까?

Java에서 URI 문자열을 이름-값 컬렉션으로 효율적으로 구문 분석하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-19 09:28:10675검색

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

URI 문자열을 이름-값 컬렉션으로 구문 분석

URI 구문 분석 작업에는 URI 쿼리에서 개별 매개변수와 해당 값을 추출하는 작업이 포함됩니다. 끈. 웹 애플리케이션 및 API 요청에서 URL을 처리할 때 일반적으로 필요합니다.

URI 문자열을 Java의 이름-값 컬렉션으로 구문 분석하려면 다음 옵션을 고려하세요.

  • 타사 라이브러리 사용:

Apache Commons Lang 또는 Google과 같은 라이브러리 Guava는 URI 구문 분석 방법을 제공합니다. 이러한 라이브러리는 URL 디코딩 및 기타 일반적인 작업을 처리하는 간결하고 편리한 접근 방식을 제공합니다.

  • 라이브러리 없이 수동 구문 분석:

보다 실용적인 접근 방식을 선호하는 경우 다음과 같이 자신만의 구문 분석 논리를 구현할 수 있습니다. 다음은 다음과 같습니다.

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;
}

이 방법은 쿼리 문자열을 개별 쌍으로 분할하고 이를 URL로 디코딩한 후 맵에 저장합니다. map.get("paramName")을 사용하여 개별 값을 검색할 수 있습니다.

URL 디코딩 처리:

쿼리 문자열 값이 URL로 인코딩될 수 있다는 점을 기억하세요. URLDecoder 클래스를 사용하여 일반 텍스트로 변환할 수 있습니다.

특수 사례 처리:

위의 구문 분석 논리에서는 각 매개변수에 단일 값이 있다고 가정합니다. 그러나 일부 URI에서는 동일한 매개변수에 대해 여러 값을 허용합니다. 이 경우를 처리하려면 구문 분석 방법을 수정하여 각 매개변수가 값 목록에 매핑되는 맵을 생성할 수 있습니다.

Java 8 Stream API:

Java의 경우 8에서는 스트림을 사용하여 구문 분석 프로세스를 단순화할 수 있습니다. 다음 코드 조각은 이 접근 방식을 보여줍니다.

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())));
}

이 버전의 메소드는 각 키가 매개변수를 나타내고 해당 값이 매개변수 값 목록인 Map을 반환합니다.

위 내용은 Java에서 URI 문자열을 이름-값 컬렉션으로 효율적으로 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.