본문 바로가기

Java

파싱 ( JSON 파싱 )

파싱이란 뭘까?(JSON 파싱 )

파싱(Parsing)이란 컴퓨터 과학에서 입력된 데이터를 해석하고 구조화하는 과정을 의미한다. 일반적으로 파싱은 텍스트 데이터를 특정 형식으로 변환하거나, 텍스트 데이터에서 유용한 정보를 추출하는 데 사용된다. 파싱을 통해 원시 데이터를 컴퓨터가 이해하고 처리할 수 있는 구조로 변환할 수 있다.

 

파싱의 주요 개념

  1. 구문 분석(Syntax Analysis):
    • 텍스트 데이터를 구문 규칙에 따라 해석하는 과정이다.
    • 주로 프로그래밍 언어의 컴파일러나 인터프리터에서 소스 코드를 구문 트리(Syntax Tree)로 변환할 때 사용된다.
  2. 데이터 형식 변환:
    • 텍스트 데이터를 특정 형식(예: JSON, XML)으로 변환하여 구조화된 데이터를 생성한다.
    • 예를 들어, JSON 형식의 문자열을 자바 객체로 변환하거나, XML 데이터를 객체로 변환하는 과정이 포함된다.
  3. 정보 추출:
    • 텍스트 데이터에서 유용한 정보를 추출하여 특정 목적에 맞게 사용하는 과정이다.
    • 예를 들어, 웹 페이지에서 특정 정보를 추출하는 웹 스크래핑(Web Scraping)이 포함된다.

 

JSON 파싱이란?

JSON(JavaScript Object Notation)은 경량 데이터 교환 형식으로, 자바스크립트 객체 표기법을 기반으로 한다. JSON 파싱은 JSON 형식의 문자열을 프로그래밍 언어에서 사용할 수 있는 객체로 변환하는 과정이다.

{
    "name": "John Doe",
    "age": 30,
    "email": "johndoe@example.com"
}

 

배열(Array)

  • 대괄호 [] 로 둘러싸인 값의 순서 있는 목록이다.
  • 각 값은 모든 JSON 데이터 타입이 될 수 있다.
[
  "apple",
  "banana",
  "cherry"
]

 

문자열(String)

  • 큰따옴표 ""로 둘러싸인 유니코드 문자이다.
  • 이스케이프 시퀀스(\n, \t, \" 등)를 지원한다.

숫자(Number)

  • 정수 또는 부동 소수점 숫자이다.
  • 10진수 형식만 지원하며, 8진수 및 16진수는 지원하지 않는다.

불리언(Boolean)

  • true 또는 false 값을 가진다.

널(Null):

  • null 값을 가진다.

 

Json Array 형식 예시

[
	{
	  "name": "John Doe",
	  "age": 30,
	  "isStudent": false
	},
	{
	  "name": "John Doe",
	  "age": 30,
	  "isStudent": false
	}
]

 

 

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
}

 

필요한 라이브러리 추가

JSON 파싱을 위해 GSON 라이브러를 추가한다. (빌드 도구를 사용하지 않는 경우, 직접 JAR 파일을 다운로드하고 프로젝트에 추가해야 한다.)

 

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();
		
		
	} // end of main 

} // end of class

 

라이브러리 추가 방법

 

 

자바 코드에서 JSON 형식에 문자열 만들어 보기

  1. 직접 문자열을 가공해서 만들어 주면 된다.
  2. Gson lib 를 이용해서 편하게 만들 수 있다.
{
  "name": "홍길동",
  "age": 21,
  "subjects": ["수학", "물리", "컴퓨터 과학"]
}
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 GsonBuilder().setPrettyPrinting().create();
		
		// 객체를 --> json 형식에 문자열로 변환 시켜! --> 메서드 toJson() 
		String student1Str = gson.toJson(student1);
		System.out.println(student1Str);
		
		// setPrettyPrinting -> 이쁘게 출력하라 옵션.. 
		Gson gson2 = new Gson();
		String studednt2Str = gson2.toJson(student2);
		System.out.println(studednt2Str);
		
		// 객체에서 ---> 문자열 형태로 가능 그럼 반대로는 어떻게 하지?? 
		// 문자열에서 ---> 클래스 형태로 어떻게 변경할까? 
		
		// Object 형태로 변환  
		Student studentObject =  gson.fromJson(student1Str, Student.class);
		System.err.println(studentObject.getName());
		
		// 배열 형태로 변환  
		Student[] StringArr =  gson.fromJson(gson.toJson(studentArr), Student[].class);
		System.err.println(StringArr);
		
		for (Student student : StringArr) {
			System.err.println(student.toString());
		}
		
		System.out.println("-----------------------------");
		System.out.println(gson.toJson(StringArr));
		
	}
}
728x90

'Java' 카테고리의 다른 글

JDBC란?  (0) 2024.06.10
JSON 파싱 연습 2단계  (1) 2024.06.07
공공 데이터 포탈 사용해 보기  (0) 2024.06.04
순수 자바코드로 HttpServer 만들기  (0) 2024.06.03
소켓을 활용한 HTTP 통신  (0) 2024.06.03