JackSon 사용 설명서

6513 단어 Java 개발
하나.JackSon 소개
잭슨은 자바 응용 라이브러리를 기반으로 자바 대상을 json 대상과 xml 문서로 변환할 수도 있고 json, xml을 자바 대상으로 변환할 수도 있다.
1, 3 가지 방식 처리 JSON
  • 스트리밍 API: JSON 컨텐츠를 분리된 이벤트로 읽고 씁니다.JsonParser는 데이터를 읽고 JsonGenerator는 데이터를 씁니다.
  • 트리 모델: JSON 파일을 준비하여 메모리에 트리 형식으로 표시한다.ObjectMapper에서 JsonNode 노드 트리를 구성합니다.
  • 데이터 귀속: JSON을 변환하고 POJO(일반 자바 대상)에서 속성으로 접근하거나 주석을 사용합니다.그것은 두 가지 유형이 있다. (1) 간단한 데이터 연결, JSON과 Java Maps, Lists, Strings, Numbers, Booleans,null 대상 변환.(2) 모든 데이터 바인딩 - JSON을 모든 JAVA 유형에서 변환합니다.ObjectMapper에서 JSON 읽기/쓰기 두 가지 유형의 데이터를 바인딩합니다.

  • 2、필요한jar팩
    jackson-all-1.9.0.jar.zip
    둘.잭슨 실현
    1. Java 객체 반서열화
    ​import java.io.IOException;
    import org.codehaus.jackson.JsonParseException;
    import org.codehaus.jackson.map.JsonMappingException;
    import org.codehaus.jackson.map.ObjectMapper;
    import org.codehaus.jackson.map.SerializationConfig;
    
    public class JacksonTester {
       public static void main(String args[]){
          ObjectMapper mapper = new ObjectMapper();
          String jsonString = "{\"name\":\"Mahesh\", \"age\":21}";
    
          //map json to student
          try {
             Student student = mapper.readValue(jsonString, Student.class);
             System.out.println(student);
             mapper.enable(SerializationConfig.Feature.INDENT_OUTPUT);
             jsonString = mapper.writeValueAsString(student);
             System.out.println(jsonString);
    
          } 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+ " ]";
       }	
    }

    출력 확인:
    Student [ name: Mahesh, age: 21 ] { "name": "Mahesh", "age": 21 }
    2. Java 객체 서열화
    메모 사용자정의 시리얼화
  • @JsonInclude(Include.NON EMPTY): 속성이 비어 있지 않을 때만 이 필드를 서열화합니다. 즉, null 또는 빈 문자열입니다.
  • @JsonIgnore: 서열화할 때 이 필드를 무시합니다.
  • @JsonProperty(value = "user name"): 서열화할 때의 필드 이름을 지정하고 기본적으로 속성 이름을 사용합니다.
  • @JsonFormat(pattern = "yyyy-MM-dd H:mm:ss", timezone = "GMT+8"): Date 클래스 필드를 서열화할 때의 형식을 지정합니다.
  • @JsonUnwrapped(prefix = "user_"):구성원 객체의 속성을 컨테이너 클래스로 올리고 지정된 접두사를 추가하는 private User user."user_name": "xxx", "user_age": 22, ...
  • @JsonIgnoreType: 클래스 주석, 서열화 시 무시합니다.
  • @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,property = "id"): 클래스나 속성에 작용하여 서열화/반서열화할 때 이 대상이나 필드에 대상 식별코드를 추가하는 데 사용되며, 보통 링에 따라 끼워 넣는 문제를 해결하는 데 사용됩니다.
  • import java.io.IOException; 
    import java.text.ParseException; 
    import java.text.SimpleDateFormat; 
       
    import com.fasterxml.jackson.databind.ObjectMapper; 
       
    public class JacksonDemo { 
        public static void main(String[] args) throws ParseException, IOException { 
            User user = new User(); 
            user.setName("  ");  
            user.setEmail("[email protected]"); 
            user.setAge(20); 
               
            SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd"); 
            user.setBirthday(dateformat.parse("1996-10-01"));        
               
            /**
             * ObjectMapper JSON     ,Jackson   JSON     ObjectMapper   。
             * ObjectMapper   JSON      ,   JSON     File、OutputStream       。
             * writeValue(File arg0, Object arg1) arg1  json  ,    arg0   。
             * writeValue(OutputStream arg0, Object arg1) arg1  json  ,    arg0    。
             * writeValueAsBytes(Object arg0) arg0  json  ,           。
             * writeValueAsString(Object arg0) arg0  json  ,          。
             */ 
            ObjectMapper mapper = new ObjectMapper(); 
               
            //User  JSON 
            //    :{"name":"  ","age":20,"birthday":844099200000,"email":"[email protected]"} 
            String json = mapper.writeValueAsString(user); 
            System.out.println(json); 
               
            //Java   JSON 
            //    :[{"name":"  ","age":20,"birthday":844099200000,"email":"[email protected]"}] 
            List users = new ArrayList(); 
            users.add(user); 
            String jsonlist = mapper.writeValueAsString(users); 
            System.out.println(jsonlist); 
        } 
    } 

    셋.트리 모델 반복
    import java.io.IOException;
    import java.util.Iterator;
    
    import org.codehaus.jackson.JsonNode;
    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 {
             ObjectMapper mapper = new ObjectMapper();
             String jsonString = "{\"name\":\"Mahesh Kumar\", \"age\":21,\"verified\":false,\"marks\": [100,90,85]}";
             JsonNode rootNode = mapper.readTree(jsonString);
    
             JsonNode nameNode = rootNode.path("name");
             System.out.println("Name: "+ nameNode.getTextValue());
    
             JsonNode ageNode = rootNode.path("age");
             System.out.println("Age: " + ageNode.getIntValue());
    
             JsonNode verifiedNode = rootNode.path("verified");
             System.out.println("Verified: " + (verifiedNode.getBooleanValue() ? "Yes":"No"));
    
             JsonNode marksNode = rootNode.path("marks");
             Iterator iterator = marksNode.getElements();
             System.out.print("Marks: [ ");
             while (iterator.hasNext()) {
                JsonNode marks = iterator.next();
                System.out.print(marks.getIntValue() + " "); 
             }
             System.out.println("]");
          } catch (JsonParseException e) {
             e.printStackTrace();
          } catch (JsonMappingException e) {
             e.printStackTrace();
          } catch (IOException e) {
             e.printStackTrace();
          }
       }
    }

    좋은 웹페이지 즐겨찾기