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 중국어 웹사이트의 기타 관련 기사를 참조하세요!