Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 JSONTokener란? 핵심 개념과 주요 메서드 완벽 정리

JSONTokener란 무엇인가?

Java에서 JSONTokener 클래스는 하나의 문자열을 여러 개의 토큰(token)으로 분리하여 처리할 수 있도록 지원하는 유틸리티 클래스입니다. 내부적으로 JSONObjectJSONArray 생성자가 JSON 소스 문자열을 파싱할 때 이 클래스를 활용합니다.

JSONTokener는 커서(cursor) 기반으로 동작하며, 문자열을 한 글자씩 읽어 들이면서 현재 위치를 앞뒤로 자유롭게 이동시킬 수 있습니다. 덕분에 복잡한 JSON 구조를 세밀하게 제어하며 파싱해야 하는 상황에서 매우 유용합니다.

JSONTokener의 주요 메서드

  • back(): 커서를 한 칸 뒤로 이동시킵니다.
  • more(): 아직 읽을 토큰(문자)이 남아 있으면 true, 더 이상 없으면 false를 반환합니다.
  • next(): 현재 위치 바로 다음의 문자를 반환하고 커서를 앞으로 이동시킵니다.
  • nextTo(character): 지정한 문자를 만날 때까지의 문자열을 반환합니다.

구문(Syntax)

public class JSONTokener extends java.lang.Object

예제 코드

import java.io.*;
import org.json.*;

public class JSONTokenerTest {
   public static void main(String args[]) throws JSONException, Exception {
      String jsonStr = "{" + " \"Technology\": \"Java\", "+ " \"location\": [ Madhapur, Hyderabad ] " + "}";
      JSONTokener jsonToken = new JSONTokener(jsonStr);
      jsonToken.next();
      jsonToken.next();
      jsonToken.next();
      jsonToken.next();
      char c = jsonToken.next();
      jsonToken.back();
      boolean b = jsonToken.more();
      String s = jsonToken.nextTo('i');
      System.out.println("next character: " + c);
      System.out.println("has more tokens: " + b);
      System.out.println("next to i: " + s);
   }
}

코드 설명

위 예제에서는 먼저 네 번의 next() 호출을 통해 문자열 시작 부분의 '{', 공백, 따옴표 등을 건너뜁니다. 그다음 다섯 번째 next() 호출로 'T' 문자를 얻습니다. 이후 back()으로 커서를 한 칸 되돌린 뒤, more()를 호출해 남아 있는 토큰이 있는지 확인하고, 마지막으로 nextTo('i')를 통해 'i' 문자를 만나기 전까지의 전체 문자열을 추출합니다.

실행 결과

next character: T
has more tokens: true
next to i: Technology": "Java", "locat

이처럼 JSONTokener를 활용하면 JSON 문자열을 문자 단위로 정밀하게 탐색하고 조작할 수 있어, 직접 파서를 구현하거나 특정 위치의 데이터를 추출해야 할 때 큰 도움이 됩니다.