[Java] json 데이터 다루기(org.json)
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
버전을 사용하였다.
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
메서드를 사용해야한다. java
와 javascript
에서 객체를 선언하고 출력하는 예제이다.
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