지손
Gson개발자 | 구글 |
---|---|
초기 릴리즈 | 2008년 5월 22일, | 전( 5월 22일
안정된 릴리스 | 2.9.0 / 2022년 2월 ; 전( |
저장소 | |
기입처 | 자바 |
운영 체제 | 크로스 플랫폼 |
면허증. | Apache 라이센스 2.0 |
웹 사이트 | github |
Gson(Google Gson이라고도 함)은 Java 객체를 JSON에 직렬화 및 직렬화 해제하기 위한 오픈 소스 Java 라이브러리입니다.
역사
Gson 라이브러리는 원래 Google 내부 목적으로 개발되었으며 버전 1.0은 Apache License 2.0의 조건에 따라 2008년 5월 22일에 출시되었습니다.최신 버전인 2.9.0은 2022년 2월 12일에 출시되었습니다.
버전 이력
- 2022년 2월 12일 : 버전 2.9.0
- 2021년 10월 30일 : 버전 2.8.9
- 2021년 8월 20일 : 버전 2.8.8
- 2021년 5월 25일: 버전 2.8.7
- 2019년 10월 4일 : 버전 2.8.6
- 2018년 5월 21일 : 버전 2.8.5
- 2018년 5월 1일 : 버전 2.8.4
- 2018년 4월 27일 버전 2.8.3
- 2017년 9월 19일 버전 2.8.2
- 2017년 5월 30일 : 버전 2.8.1
- 2016년 10월 27일 버전 2.8.0
- 2016년 6월 14일 버전 2.7
- 2016년 2월 26일 버전 2.6.2
- 2016년 2월 11일 버전 2.6.1
- 2016년 2월 11일 버전 2.6
- 2015년 11월 24일 버전 2.5
- 2015년 10월 4일 : 버전 2.4
- 2014년 11월 20일 : 버전 2.3.1
- 2014년 8월 11일 : 버전 2.3
- 2013년 5월 13일 버전 2.2.4
- 2013년 4월 12일 버전 2.2.3
- 2012년 7월 2일: 버전 2.2.2
- 2012년 5월 5일: 버전 2.2.1
- 2012년 5월 5일: 버전 2.2
- 2011년 12월 31일: 버전 2.1
- 2011년 11월 13일 : 버전 2.0
- 2011년 4월 13일 : 버전 1.7.1
- 2011년 4월 12일 버전 1.7
- 2010년 11월 24일 : 버전 1.6
- 2010년 8월 19일 버전 1.5
- 2009년 10월 9일 : 버전 1.4
- 2009년 4월 1일 : 버전 1.3
- 2009년 1월 12일: 버전 1.3 베타판
- 2008년 8월 29일: 버전 1.2
- 2008년 7월 18일: 버전 1.1.1
- 2008년 7월 1일: 버전 1.1
- 2008년 6월 17일: 버전 1.0.1
- 2008년 5월 22일: 버전 1.0
사용.
Gson은 리플렉션을 사용하기 때문에 클래스를 시리얼화 또는 시리얼화 해제하여 변경할 필요가 없습니다.기본적으로는 클래스가 기본 no-args 생성자를 정의해야 합니다(회피할 수 있는 기능 참조).
다음으로 샘플 오브젝트를 시리얼화할 때의 가장 기본적인 Gson 사용 예를 나타냅니다.
패키지 예; 일반의 학급 차 { 일반의 스트링 제조원; 일반의 스트링 모델; 일반의 이중으로 하다 용량.; 일반의 부울 사고.; 일반의 차() { } 일반의 차(스트링 제조원, 스트링 모델, 이중으로 하다 용량., 부울 사고.) { 이것..제조원 = 제조원; 이것..모델 = 모델; 이것..용량. = 용량.; 이것..사고. = 사고.; } @오버라이드 일반의 스트링 문자열() { 돌아가다 (제조원: + 제조원 + ", " + "모델: " + 모델 + ", " + "용량: " + 용량. + ", " + 사고: + 사고.); } }
패키지 예; 일반의 학급 사람인 { 일반의 스트링 이름.; 일반의 스트링 성; 일반의 차[] 자동차; 일반의 인트 전화; 일반의 일시적인 인트 나이; 일반의 사람인() { } 일반의 사람인(스트링 이름., 스트링 성, 인트 전화, 인트 나이, 차[] 자동차) { 이것..이름. = 이름.; 이것..성 = 성; 이것..자동차 = 자동차; 이것..전화 = 전화; 이것..나이 = 나이; } @오버라이드 일반의 스트링 문자열() { String Builder 어떤 일을 맡다 = 신규 String Builder(); 어떤 일을 맡다.추가하다("이름: ").추가하다(이름.).추가하다(" ").추가하다(성).추가하다("\n"); 어떤 일을 맡다.추가하다("전화: ").추가하다(전화).추가하다("\n"); 어떤 일을 맡다.추가하다('나이: ").추가하다(나이).추가하다("\n"); 인트 i = 0; 위해서 (차 차 : 자동차) { i++; 어떤 일을 맡다.추가하다('자동차').추가하다(i).추가하다(": ").추가하다(차).추가하다("\n"); } 돌아가다 어떤 일을 맡다.문자열(); } }
다음 기본 클래스의 코드를 호출한 후:
패키지 주된; 수입품 예.차; 수입품 예.사람인; 수입품 com.google.gson을 클릭합니다.지손; 수입품 com.google.gson을 클릭합니다.Gson Builder; 일반의 학급 주된 { 일반의 정적인 무효 주된(스트링[] args) { // 데모용으로 예쁜 인쇄를 유효하게 하다 // 'new Gson'()을 사용하여 인스턴스를 직접 생성할 수도 있습니다.이것에 의해, 콤팩트한 JSON이 생성됩니다. 지손 손 = 신규 Gson Builder().set Pretty 인쇄().만들다(); 차 오디오 = 신규 차('오디', 'A4', 1.8, 거짓의); 차 스코다 = 신규 차("슈코다, 옥타비아, 2.0, 진실의); 차[] 자동차 = {오디오, 스코다}; 사람인 존도 = 신규 사람인("존', "Doe", 2025550191, 35, 자동차); 시스템..나가..인쇄(손.행선(존도)); } }
다음의 JSON 출력이 표시됩니다.
{ "이름: "존', "실패": "Doe", '자동차": [ { "제조원": '오디', "모델": 'A4', "용량": 1.8, "실패": 거짓의 }, { "제조원": "슈코다, "모델": 옥타비아, "용량": 2.0, "실패": 진실의 } ], "전화": 2025550191 }
사용자의 필드 "연령"은 임시로 표시되므로 출력에 포함되지 않습니다.
마지막 예에서 생성된 출력을 역직렬화하려면 다음 코드를 실행합니다.
패키지 주된; 수입품 예.사람인; 수입품 com.google.gson을 클릭합니다.지손; 일반의 학급 주된 { 일반의 정적인 무효 주된(스트링[] args) { 지손 손 = 신규 지손(); 스트링 json = "{\"name\":"John\", "surname\", "Doe\", "cars\":[{\"manufacturer\"]Audi\", "모델\", "A4", + ""capacity\":1.8,"capacity\": false", {\"manufacturer\":"Shkoda", "모델", "Octavia", "capacity" + ":2.0,\"param\":true",\"전화\":"param550191}"; 사람인 존도 = 손.Json에서(json, 사람인.학급); 시스템..나가..인쇄(존도.문자열()); } }
그리고 다음과 같은 출력이 생성됩니다.
이름 : 신원미상 전화: 2025550191 연령: 0 차량 1: 제조업체:Audi, 모델: A4, 용량: 1.8, 사고: 거짓 차량 2: 제조사: 슈코다, 모델:Octavia, 용량: 2.0, 사고: 참
위의 예에서는 Java Platform Module System에서 Gson을 사용하는 방법을 보여 줍니다.
모듈 Gson의 예 { 필요. com.구글.손; // 위의 예에서 선언된 패키지를 열어 Gson이 클래스에서 리플렉션을 사용할 수 있도록 합니다. // 패키지 내부(비공개 필드에도 액세스 가능) 열리다 예 로. com.구글.손; }
자세한 예는 GitHub 저장소에 있는 Gson의 사용 가이드를 참조하십시오.
특징들
- Gson은 컬렉션, 범용 유형 및 중첩된 클래스를 처리할 수 있습니다(내부 클래스 포함, 기본적으로는 처리할 수 없습니다).
- 역직렬화 시 Gson은 역직렬화 대상 객체의 유형 트리를 탐색합니다.이로 인해 JSON 입력에 있는 추가 필드가 무시됩니다.
- 사용자는 커스텀 시리얼라이저 및/또는 디시리얼라이저를 작성하여 프로세스 전체를 제어할 수 있으며 소스 코드가 액세스할 수 없는 클래스의 인스턴스도 시리얼라이즈(디시리얼라이즈)할 수 있습니다.
- 사용자는 정의된 no-args 생성자 없이 클래스의 인스턴스를 역직렬화할 수 있는 InstanceCreator를 작성할 수 있습니다.
- Gson은 커스터마이즈성이 뛰어나며, 다음과 같이 지정할 수 있습니다.
- 콤팩트하고 예쁜 인쇄 (콤팩트한 출력과 판독 가능한 출력 모두)
- null 객체 필드 처리 방법 - 기본적으로 출력에 표시되지 않습니다.
- (비직렬화)에서 제외되는 필드의 규칙
- Java 필드 이름 변환 방법