[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
[설치 메뉴얼] GSON 라이브러리를 STS 에서 적용시키기
https://mvnrepository.com/artifact/com.google.code.gson/gson/2.8.5
whatsthatsound.tistory.com
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;
}
'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 |