Jackson 객체 직렬화
여기에서는 Java 객체를 JSON 파일로 직렬화한 다음 JSON 파일을 읽어서 객체로 변환하는 방법을 소개합니다. 이 예에서는 Student 클래스가 생성됩니다. JSON으로 표시되는 학생 개체를 포함하는 Student.json 파일을 만듭니다.
C:>Jackson_WORKSPACE에 JacksonTester라는 Java 클래스 파일을 생성합니다.
파일: JacksonTester.java
import java.io.File; import java.io.IOException; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.JsonParseException; 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 { Student student = new Student(); student.setAge(10); student.setName("Mahesh"); tester.writeJSON(student); Student student1 = tester.readJSON(); System.out.println(student1); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private void writeJSON(Student student) throws JsonGenerationException, JsonMappingException, IOException{ ObjectMapper mapper = new ObjectMapper(); mapper.writeValue(new File("student.json"), student); } private Student readJSON() throws JsonParseException, JsonMappingException, IOException{ ObjectMapper mapper = new ObjectMapper(); Student student = mapper.readValue(new File("student.json"), Student.class); return student; } } class Student { private String name; private int age; public Student(){} public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString(){ return "Student [ name: "+name+", age: "+ age+ " ]"; } }
결과 확인
javac Compile 사용 다음 클래스:
C:\Jackson_WORKSPACE>javac JacksonTester.java
이제 jacksonTester를 실행하여 결과를 확인합니다.
C:\Jackson_WORKSPACE>java JacksonTester
출력 결과 확인
Student [ name: Mahesh, age: 10 ]
Jackson 데이터 바인딩 제네릭
간단한 데이터 바인딩에서 중앙에서, String을 키 개체와 값 개체 매핑 클래스로 사용합니다. 대신 구체적인 Java 객체를 사용하고 JSON으로 타입캐스트하여 사용할 수 있습니다.
UserData 클래스를 사용하여 사용자별 데이터를 저장하는 다음 예를 살펴보세요.
Java 클래스 파일 디렉토리 C:>Jackson_WORKSPACE에 JacksonTester라는 파일을 생성합니다.
파일 이름: JacksonTester.java
import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.type.TypeReference; public class JacksonTester { public static void main(String args[]){ JacksonTester tester = new JacksonTester(); try { ObjectMapper mapper = new ObjectMapper(); Map userDataMap = new HashMap(); UserData studentData = new UserData(); int[] marks = {1,2,3}; Student student = new Student(); student.setAge(10); student.setName("Mahesh"); // JAVA Object studentData.setStudent(student); // JAVA String studentData.setName("Mahesh Kumar"); // JAVA Boolean studentData.setVerified(Boolean.FALSE); // Array studentData.setMarks(marks); TypeReference ref = new TypeReference>() { }; userDataMap.put("studentData1", studentData); mapper.writeValue(new File("student.json"), userDataMap); //{ // "studentData1": // { // "student": // { // "name":"Mahesh", // "age":10 // }, // "name":"Mahesh Kumar", // "verified":false, // "marks":[1,2,3] // } //} userDataMap = mapper.readValue(new File("student.json"), ref); System.out.println(userDataMap.get("studentData1").getStudent()); System.out.println(userDataMap.get("studentData1").getName()); System.out.println(userDataMap.get("studentData1").getVerified()); System.out.println(Arrays.toString(userDataMap.get("studentData1").getMarks())); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } class Student { private String name; private int age; public Student(){} public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString(){ return "Student [ name: "+name+", age: "+ age+ " ]"; } } class UserData { private Student student; private String name; private Boolean verified; private int[] marks; public UserData(){} public Student getStudent() { return student; } public void setStudent(Student student) { this.student = student; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Boolean getVerified() { return verified; } public void setVerified(Boolean verified) { this.verified = verified; } public int[] getMarks() { return marks; } public void setMarks(int[] marks) { this.marks = marks; } }
출력 확인
javac을 사용하면 다음 클래스가 컴파일됩니다.
C:\Jackson_WORKSPACE>javac JacksonTester.java
이제 jacksonTester를 실행하여 결과를 확인하세요.
C:\Jackson_WORKSPACE>java JacksonTester
검증 출력
Student [ name: Mahesh, age: 10 ] Mahesh Kumar false [1, 2, 3]
자바의 Jackson 라이브러리 구문 분석 자세히 알아보기 객체 직렬화 및 데이터 일반 바인딩과 관련된 기사는 PHP 중국어 웹사이트에 주목하세요!