- [Java] 107. 파싱/JSON 파싱2024년 06월 05일
- Song hyun
- 작성자
- 2024.06.05.:23
728x90반응형[Java] 107. 파싱/JSON 파싱
1. 파싱이란?
2. 파싱의 주요 개념
3. JSON 파싱
4. 예시 코드
5. GSON 라이브러리 추가하기
6. Java 코드에서 JSON 형식에 문자열 만들어보기
1. 파싱이란?
-파싱(Parsing)이란 컴퓨터 과학에서 입력딘 데이터를 해석하고, 구조화하는 과정을 의미한다. 일반적으로 파싱은 텍스트 데이터를 특정 형식으로 변환하거나, 텍스트 데이터에서 유용한 정보를 추출할 때 사용된다.
2. 파싱의 주요 개념
(1) 구문 분석(Syntax Analysis)
-텍스트 데이터를 구문 규칙에 따라 해석하는 과정이다.
-주로 프로그래밍 언어의 컴파일러, 인터프리터에서 소스 코드를 구문 트리(Syntax Tree)로 변환할 때 사용된다.
(2) 데이터 형식 변환
-텍스트 데이터를 특정 형식(JSON, XML)으로 변환하여 구조화된 데이터를 생성한다.
-ex: JSON 형식의 문자열을 자바 객체로 변환하거나, XML 데이터를 객체로 변환하는 과정
(3) 정보 추출
-텍스트 데이터에서 유용한 정보를 추출해, 특정 목적에 맞게 사용한다.
-ex: 웹 페이지에서 특정 정보를 추출하는 웹 스크래핑(Web Scraping)이 포함된다.
3. JSON 파싱
(1) JSON은 Javascript Object Notation의 약자로, 경량 데이터 교환 형식이다. 자바스크립트 객체 표기법을 기반으로 한다. JSON 파싱은 JSON 형식의 문자열을 프로그래밍 언어에서 사용할 수 있는 객체로 변환하는 과정이다.
(2) Javascript 내에서의 정보 묶음 표기법
{ "name": "John Doe", "age": 30, "email": "johndoe@example.com" }
(3) JSON은 경량 데이터 교환 형식으로, 자바스크립트 객체 표기법을 기반으로 한다. JSON 파싱은 JSON 형식의 문자열을 프로그래밍 언어에서 사용할 수 있는 객체로 변환하는 과정이다.
자료형 특징 배열(Array) -대괄호 []로 둘러싸인 값의 순서 있는 목록이다.
-각 값은 모든 JSON 데이터 타입이 될 수 있다.문자열(String) -큰 따옴표""로 둘러싸인 유니코드 문자이다.
-이스케이프 시퀀스(\n,\t,\")를 지원한다.숫자(Number) -정수 또는 부동 소수점 숫자이다.
-10진수 형식만 지원하며, 8 및 16진수는 포함하지 않는다.불리언(Boolean) true 혹은 false 값을 가진다. 널(Null) -null 값을 가진다.
4. 예시 코드
(1) JSON Array
[ { "name": "John Doe", "age": 30, "isStudent": false }, { "name": "John Doe", "age": 30, "isStudent": false } ]
(2) JSON Object
{ "name": "John Doe", "age": 30, "isStudent": false, "scores": [95, 87, 92], "address": { "street": "123 Main St", "city": "Anytown", "zip": "12345" }, "courses": [ { "name": "Math", "grade": "A" }, { "name": "English", "grade": "B" } ], "graduationYear": null }
*PlaceHolder에서 위와 같은 JSON 코드를 볼 수 있다.
https://jsonplaceholder.typicode.com/users/8
5. GSON 라이브러리 추가하기
-JSON 파싱을 위해 GSON 라이브러리를 추가해보자.
https://whatsthatsound.tistory.com/253
6. Java 코드에서 JSON 형식에 문자열 만들어보기
Java 코드에서 JSON 형식에 문자열을 만드는 데에는 두 가지 방법이 있다.
-> (1) 직접 문자열을 가공해 만들기
-> (2) Gson library를 이용해 편하기 만들기
*Builder 패턴 (디자인 패턴)
-편하게 작성할 수 있다. (생성자 오버로딩 有)
-순서를 잘 지켜 작성해야 한다.
package ch01; import com.google.gson.Gson; public class MainTest1 { public static void main(String[] args) { // Gson <- 현재 사용 불가 // lib 폴더에 Gson 라이브러리 추가 // 우리 소스 코드 상에서 사용하기 위해 설정이 필요하다. // 프로젝트 속성에서 빌드패스 들어가서 클래스 패스에 add jars 등록 Gson gson = new Gson(); gson.fieldNamingStrategy(); Student student1=new Student(); Student student2=new Student("홍",20,"컴공"); Student student3=Student.builder().age(100).name("고").major("경영").build(); } // end of main } // end of class
package ch01; import com.google.gson.Gson; import com.google.gson.GsonBuilder; public class GsonExample { public static void main(String[] args) { Student student1 = new Student("고길동",40,"애완학과"); Student student2 = new Student("둘리",5,"문제학과"); Student[] studentArr= {student1,student2}; // 특정 형식(구조화) 있는 문자열로 변환하고 싶다... // -> JSON 형태 // Gson gson=new Gson(); Gson gson = new GsonBuilder().setPrettyPrinting().create(); // 객체를 json 형식의 문자열로 변환 시켜! // --> 메서드 toJson() String student1String=gson.toJson(student1); System.out.println(student1String); } }
package ch01; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @Getter @Setter @NoArgsConstructor @AllArgsConstructor @Builder public class Student { private String name; private int age; private String major; }
728x90반응형'Java > 네트워크 통신' 카테고리의 다른 글
[Java] 109. JSON 파싱 연습 (2) - (1) Object (0) 2024.06.07 [Java] 108. jsonPlaceHolder 파싱하기 (0) 2024.06.05 [Java] 106. 연습 문제: 오픈 API 사용해보기 (0) 2024.06.04 [Java] 105. 공공 데이터 포탈 사용하기 (0) 2024.06.04 [Java] 104. HTTP 통신 도전 과제: 바이트 스트림 변환 (0) 2024.06.03 다음글이전글이전 글이 없습니다.댓글