728x90
반응형
Gson??
- JAVA에서 Json객체를 파싱하고, 생성하기 위해 사용되는 구글에서 개발한 오픈 소스
- JavaObject를 Json 문자열로 변환할 수 있고, Json 문자열을 JavaObject로 변환 가능.
- 직접 라이브러리를 다운 받아 프로젝트에 추가.
- Gson 객체 생성 방법
- new Gson()
- new GsonBuilder.create()
public static void main(String[] args) {
Gson gson1 = new Gson();
Gson gson2 = new GsonBuilder().create();
Gson gson3 = new GsonBuilder().setPrettyPrinting().create();
}
GsonBuilder란?
- 구글의 Gson 라이브러리에서 제공하는 객체 생성 도구
- Gson 객체 생성 가능.
- 설정 옵션을 통해 사용자 원하는 형태와 기능으로 Gson 객체를 커스터마이징 할 수 있게 함.
- Json 데이터의 직렬화와 역직렬화 과정에서 발생할 수 있는 여러 상황에 대응 가능.
- 효율적이고 안정적인 데이터 처리 지원.
- EX)
- disableHtmlEscaping() : Html 문자를 유니코드로 이스케이프 처리함. GsonBuilder를 통해 생성된 객체가 Html 문자 그대로 전달함.
- setPretyPrinting() : Json 문자열을 가독성 좋게 출력하는 옵션.
- serializeNulls() : 기본적으로 Gson은 null 필드를 생략하지만, 해당 옵션을 사용하면 null로 인해 필드가 누락된 경우를 발생할 수 있는 예외상황을 예방 가능.
package json.gson;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONObject;
public class GsonUtil {
private static Gson gson1 = new Gson();
private static Gson gson2 = new GsonBuilder()
.disableHtmlEscaping() // HTML 문자를 유니코드로 이스케이프 처리한다. GsonBuilder 를 통해 생성된 객체가 HTML 문자 그대로 전달한다.
.setPrettyPrinting() //Json 문자열을 가독성 좋게 출력하게 하는 옵션
.serializeNulls() //기본적으로 Gson은 null 필드를 생략하지만, 해당 옵션을 사용하면 null로 인해 필드가 누락된 경우를 발생할 수 있는 예외상황을 예방할 수 있다.
.create();
private static String getJsonData(){
JSONObject jsonObject = new JSONObject();
jsonObject.put("data", "Test Data <연습 파일>");
//JsonObject를 Json 문자열로 변환(toJson())
return gson2.toJson(jsonObject);
}
private static UserInfo getData(){
UserInfo userInfo = new UserInfo();
userInfo.setNum(null);
userInfo.setName("ssg");
List<String> roles = new ArrayList<>();
roles.add("Roll-1");
roles.add("Roll-2");
roles.add("Roll-3");
userInfo.setRoles(roles);
return userInfo;
}
public static void main(String[] args) {
System.out.println(getJsonData());
System.out.println(gson2.toJson(getData()));
}
}
실전 예제
- Student 클래스를 Json 문자열로 변화하여 출력할 수 있게 하는 ObjectToJson 클래스를 작성
- String jsonStudent = "{\"id\":1,\"name\":\"YOYO\"}"; 를 Json 문자열을 Student 객체로 변환하여 출력
package json.gson;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.json.JSONObject;
public class ObjectToJson {
private static Gson gson = new GsonBuilder()
.disableHtmlEscaping()
.setPrettyPrinting()
.serializeNulls()
.create();
public static void main(String[] args) {
studentToJson();
jsonToStudent("{\"id\":1,\"name\":\"YOYO\"}");
}
private static void studentToJson(){
//Student 클래스를 Json 문자열로 변화하여 출력할 수 있게 하는 ObjectToJson 클래스를 작성
Student student1 = new Student(1, "홍길동");
System.out.println(gson.toJson(student1));
}
private static void jsonToStudent(String str){
//String jsonStudent = "{\"id\":1,\"name\":\"YOYO\"}"; 를 Json 문자열을 Student 객체로 변환하여 출력
Student student2 = new Student();
JSONObject jsonObject = new JSONObject(str);
gson.toJson(jsonObject);
student2.setId(jsonObject.getInt("id"));
student2.setName(jsonObject.getString("name"));
System.out.println("학생의 Id : " + student2.getId());
System.out.println("학생의 name : " + student2.getName());
}
}
package json.gson;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
private int id;
private String name;
}
https://github.com/bottomsUp-99?tab=repositories
728x90
반응형
'Java Study' 카테고리의 다른 글
데이터 입출력 (2) | 2024.07.17 |
---|---|
java.base 모듈 (0) | 2024.07.13 |
Lamda(람다식) (0) | 2024.07.12 |
제네릭(Generic)이란? (0) | 2024.07.10 |
JDBC 라이브러리 (0) | 2024.07.07 |