스트리밍 API는 JSON 컨텐츠에 개별 이벤트를 읽고 씁니다. JSONPARSER는 데이터를 읽고 JSONGENERATOR는 데이터를 작성합니다. 가장 낮은 오버 헤드와 가장 빠른 읽기/쓰기 작업으로 세 가지의 가장 효율적인 방법입니다. XML의 Stax Parser와 유사합니다.
이 기사에서는 Jackson의 스트리밍 API를 사용하여 JSON 데이터를 읽고 쓰는 방법을 보여줍니다. 모든 세부 사항에 대해 JSON을 사용하여 스트리밍 API 작업은주의해서 처리해야합니다. 다음 예제는 두 가지 클래스를 사용합니다.
JSONGENERATOR CLASS- JSON String에 씁니다.
Songenerator는 Public API가 작성한 JSON 컨텐츠를 정의하는 기본 클래스입니다. jsonFactory 인스턴스의 공장 메소드를 사용하여 인스턴스를 만듭니다.
클래스 선언 다음은 org.codehaus.jackson.jsongenerator 클래스의 선언입니다.
공개 초록 클래스 jsongenerator는 객체 구현을 닫을 수 있습니다
중첩 된 수업
| Sn | 수업 및 설명 |
|---|---|
| 1 | 정적 클래스 jsongenerator.feature // 열거는 생성기의 모든 토글 기능을 정의합니다. |
건설자
| Sn | 수업 및 설명 |
|---|---|
| 1 | 기본 생성자 |
JSONPARSER 클래스 - PARSES JSON 스트링.
JSONPARSER는 공개 API가 읽을 수있는 JSON 컨텐츠를 정의하는 기본 클래스입니다. jsonFactory 인스턴스의 공장 메소드를 사용하여 인스턴스를 만듭니다.
클래스 선언 다음은 org.codehaus.jackson.jsonparser 클래스의 선언입니다.
Public Abstract Class Jsonparser는 객체 구현을 닫을 수있는 버전으로 확장합니다
중첩 된 수업
| Sn | 수업 및 설명 |
|---|---|
| 1 | 정적 클래스 jsonparser.feature // 열거는 파서의 모든 토글 가능 함수를 정의합니다. |
| 2 | 정적 클래스 JSONPARSER.NUMBERTYPE // 열거는 가능한 "로컬"(최적) 유형의 숫자에 사용할 수 있습니다. |
건설자
| Sn | 수업 및 설명 |
|---|---|
| 1 | 보호 된 JSONPARSER () // 기본 생성자 |
| 2 | 보호 된 JSONPARSER (int feature) |
상속 방법이 클래스는 다음 클래스 방법을 상속합니다.
코드 사본은 다음과 같습니다.
java.lang.object
jsongenerator를 사용하여 JSON에 쓰십시오
jsongenerator를 사용하는 것은 매우 간단합니다. 먼저 jsonfactory.createjsongenerator () 메소드를 사용하여 jsongenerator를 만들고 쓰기 *** () 메소드를 사용하여 각 JSON 값을 작성하십시오.
jsonfactory jasonfactory = new JsonFactory (); "Mahesh Kumar");
jsongenerator 작업을 살펴 보겠습니다. 디렉토리 C :/> Jackson_workSpace에서 Jacksontester라는 Java 클래스 파일을 만듭니다.
파일 : jacksontester.java
import java.io.file; import java.io.ioexception; import java.util.map; import org.codehaus.jackson.jsonencoding; import org.codehaus.jackson.jsonfactory; import org.codehaus.jackson.jsongenerator; import org.codehaus.jackson.jsonecome; import; org.codehaus.jackson.map.jsonmappingexception; import org.codehaus.jackson.map.objectmapper; public class jacksontester {public static void main (String args []) {Jacksontester tester = new Jacksontester (); try {jsonfactory jasonfactory = new JsonFactory (); jsongenerator jsongenerator = jasonfactory.createjsongenerator (새 파일 ( "Student.json"), jsonencoding.utf8); // {jsongenerator.writestartObject (); // "이름": "Mahesh Kumar"jsongenerator.writestringfield ( "이름", "Mahesh Kumar"); // "Age": 21 JSONGENERATOR.WRITENUMBERFIELD ( "Age", 21); // "검증": false jsongenerator.writebooleanfield ( "확인", false); // "marks": [100, 90, 85] jsongenerator.writefieldName ( "marks"); // [jsongenerator.writestArgarray (); // 100, 90, 85 JSONGENERATOR.WRITENUMBER (100); jsongenerator.writenumber (90); jsongenerator.writenumber (85); //] jsongenerator.writeendArray (); //} jsongenerator.writeendObject (); jsongenerator.close (); // result student.json // {// "name": "Mahesh Kumar", // "age": 21, // "verified": false, // "marks": [100,90,85] //} ObjectMapper Mapper = new ObjectMapper (); map <string, object> datamap = mapper.readValue (새 파일 ( "wiching.json"), map.class); System.out.println (datamap.get ( "name")); System.out.println (datamap.get ( "age")); System.out.println (datamap.get ( "verified")); System.out.println (datamap.get ( "marks")); } catch (jsonparseException e) {e.printstacktrace (); } catch (jsonMappingException e) {e.printstacktrace (); } catch (ioexception e) {e.printstacktrace (); }}}확인 결과
Javac을 사용하여 다음 클래스를 컴파일하십시오.
코드 사본은 다음과 같습니다.
C :/Jackson_workspace> Javac Jacksontester.java
이제 Jacksontester를 실행하여 결과를 확인하십시오.
코드 사본은 다음과 같습니다.
C :/Jackson_workspace> Java Jacksontester
출력을 확인하십시오
Mahesh Kumar21false [100, 90, 85]
JSONPARSER를 사용하여 JSON을 읽으십시오
JSONPARSER를 사용하는 것은 매우 간단합니다. 먼저 jsonfactory.createjsonparser () 메소드를 사용하여 JSONPARSER를 작성하고 다음 JSON 문자열을 태그로 읽으려면 NextToken () 메소드를 사용하십시오. 각 토큰과 해당 프로세스를 확인하십시오.
jsonfactory jasonfactory = new jsonfactory (); jjsonparser jsonparser = jasonfactory.createjsonparser (new File ( "Student.json")); if ( "name".equals (fieldName)) {// 다음 토큰으로 이동 jsonparser.nextToken (); System.out.println (jsonparser.getText ()); }}JSONPARSER의 작업을 살펴 보겠습니다. 폴더 C :/> Jackson_workSpace에서 Java에서 Jacksontester라는 클래스를 만듭니다.
파일 : jacksontester.java
import java.io.file; import java.io.ioexception; import org.codehaus.jackson.jsonencoding; import org.codehaus.jackson.jsonfactory; import org.codehaus.jackson.jsongenerator; import org.codehaus.jackson.jsonparseexception; import org.code.jackson.jackson org.codehaus.jackson.jsontoken; import org.codehaus.jackson.map.jsonmappingexception; public class jacksontester {public static void main (String args []) {Jacksontester tester = new Jacksontester (); try {jsonfactory jasonfactory = new JsonFactory (); jsongenerator jsongenerator = jasonfactory.createjsongenerator (새 파일 ( "Student.json"), jsonencoding.utf8); jsongenerator.writestartObject (); jsongenerator.writestringfield ( "이름", "Mahesh Kumar"); jsongenerator.writenumberfield ( "Age", 21); jsongenerator.writebooleanfield ( "확인", False); jsongenerator.writefieldName ( "marks"); jsongenerator.writestartarray (); // [jsongenerator.writenumber (100); jsongenerator.writenumber (90); jsongenerator.writenumber (85); jsongenerator.writeendarray (); jsongenerator.writeendobject (); jsongenerator.close (); // result student.json // {// "name": "Mahesh Kumar", // "age": 21, // "venified": false, // "marks": [100,90,85] //} jsonparser jsonparser = jasonfactory.createjsonparser (새 파일 ( "학생 .json"); while (jsonparser.nexttoken ()! = jsontoken.end_object) {// 현재 토큰 문자열 필드 나임 = jsonparser.getCurrentName (); if ( "name".equals (fieldName)) {// 다음 토큰으로 이동 jsonparser.nextToken (); System.out.println (jsonparser.getText ()); } if ( "age".equals (fieldName)) {// 다음 토큰으로 이동 jsonparser.nextToken (); System.out.println (jsonparser.getNumberValue ()); } if ( "verified".equals (fieldName)) {// 다음 토큰으로 이동 jsonparser.nextToken (); System.out.println (jsonparser.getBooleanValue ()); } if ( "marks".equals (fieldName)) {// [jsonparser.nextToken ()로 이동합니다. // "]" "while (jsonparser.nextToken ()! = jsontoken.end_array) {system.out.println (jsonparser.getNumberValue ()); }}}} catch (jsonparseexception e) {e.printstacktrace (); } catch (jsonMappingException e) {e.printstacktrace (); } catch (ioexception e) {e.printstacktrace (); }}}확인 결과
Javac을 사용하여 다음 클래스를 컴파일하십시오.
코드 사본은 다음과 같습니다.
C :/Jackson_workspace> Javac Jacksontester.java
이제 Jacksontester를 실행하고 결과를 다음과 같이보십시오.
코드 사본은 다음과 같습니다.
C :/Jackson_workspace> Java Jacksontester
출력을 확인하십시오
Mahesh Kumar21false [100, 90, 85]