programming

Java 썸네일

JSON 이란 ❓


Javascript Object Notation(JSON) 은 자바스크립트 객체 표기법으로 키(key)와 값(value)의 쌍으로 이루어져있는 구조입니다. 그리고 Key와 Value 사이에는 콜론(:)이 들어간다.

옛날에는 xml도 메타데이터를 정의할때 많이 쓰였는데, 요즘에는 개발하면은 xml 보다는 편이성, 가독성 등 여러 이유 등으로 JSON 데이터를 많이 쓰는것을 볼수있다.

다음은 JSON 데이터의 예시이다.

// ex.1
{ name : "홍길동"},
// ex.2
{ name : "홍길동", age: 25, hobbies : ["축구", "농구", "배구"]}


java에서 json 다루기❗


프론트 개발 환경은 javascript로 되있는 경우가 많다.(vue, react .. 등등) javascript 개발 환경에서는 json 데이터를 다루는 일이 별 어려움이 없지만, java 개발 환경에서는 외부 라이브러리를 사용해야 가능하다.

나의 경우에는 org.json 라이브러리를 사용했다.

1️⃣ 라이브러리 pom.xml 추가


maven으로 되있는 java 프로젝트는 pom.xml에 사용할 라이브러리를 선언한다. org.json 라이브러리 의존성을 아래와 같이 추가해준다.

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20220924</version>
</dependency>

org.json 버전 리스트는 maven 공식 레퍼지토리에서 확인할 수 있다. 나의경우에는 20220924 버전을 사용하였다.

backend-02-01

https://mvnrepository.com/artifact/org.json/json

2️⃣ java 파일 JSONObject import


기본적인 json 구조의 데이터를 다루려면 org.json 에서 JSONObject 클래스를 사용한다. 아래는 json 파일을 가져와서 변수에 저장하고 출력하는 예제이다.

import org.json.JSONObject;
import java.nio.file.Files;
import java.nio.file.Paths;

public class TestCode {
public static void main(String[] args) {
String jsonFilePath = "실제 json 파일경로/example.json";
String jsonString = new String(Files.readAllBytes(Paths.get(jsonFilePath)));
JSONObject exampleJson = new JSONObject(jsonString);
System.out.print(exampleJson);  
 }
}

3️⃣ JSONObject get 메서드

javascript 에서 데이터를 다룰때와 큰 차이점 또하나는 javascript에서는 Object.key 또는 Object[key]와 같이 데이터를 가져오는데, java에서는 데이터 타입별로 다른 get 메서드를 사용해야한다. javajavascript에서 객체를 선언하고 출력하는 예제이다.

const people = {
  name : "홍길동",
  age : 25,
  hobbies : ["축구", "농구", "배구"]
}

console.log(json.name);
console.log(json.age);
console.log(json.hobbies);
import org.json.JSONObject;

public class TestCode {
  public static void main(String[] args) {
    JSONArray hobbies = new JSONArray();
    hobbies.put("축구");
    hobbies.put("농구");
    hobbies.put("배구");
    JSONObject people = new JSONObject()
              .put("name", "홍길동");
              .put("age", 25);
              .put("hobbies", hobbies);

    System.out.print(people.getString("name"));
    System.out.print(people.getInt("age"));
    System.out.print(people.getJSONArray("hobbies"));
  }
}

Leave a comment