본문 바로가기
Java/네트워크 통신

[Java] 107. 파싱/JSON 파싱

글: Song hyun 2024. 6. 5.
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

Object 형태의 JSON 코드

 


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;

}
728x90
반응형