개발공작소
article thumbnail
728x90

 

 

 

지금까지는 프론트단에서 json을 많이 사용해서 기본적인 지식은 있었는데, 백단에서 json을 쓸일은 없었다.

그래서 관련 라이브러리와 JSONObject와 JSONArray에 대해 정리해보려 한다.

 

 

json-simple 라이브러리 다운로드

 

 

java에서 JSON을 다룰 때 아래의 라이브러리를 활용할 수 있다.

 

json-simple

<dependency>
    <groupId>com.googlecode.json-simple</groupId>
    <artifactId>json-simple</artifactId>
    <version>1.1.1</version>
</dependency>

 

json관련 라이브러리는 종류가 꽤 많다. 각 라이브러리에 따라 지원하는 메서드가 각기 다르니 직접 추가해서 사용해보고 정하는 것도 나쁘지 않다. json-simple이 제일 사용하기 무난한 듯..

아래 링크에 각 라이브러리의 차이점에 대해 잘 정리 되어있으니 확인해보도록 하자.

 

[2021 update] The Ultimate JSON Library: JSON.simple vs GSON vs Jackson vs JSONP 참조

 

 

JSONParser 사용방법 및 샘플코드

 

이름 그대로 JSON데이터를 파싱해주는 생성자이다. parse 함수를 통해 파일이나 문자열, HashMap 등을 받아

JSONObject나 JSONArray로 파싱할 수 있다.

 

 

샘플코드

public static void jsonExample() throws ParseException {
		/**
		 * jsonStringStr : JSON형식 객체 샘플
		 * jsonArrayStr : JSON형식 배열 샘플
		 */
		String jsonStringStr = "{\"name\":\"John\", \"age\":30, \"car\":null, \"arr\": [1,2,3]}";
		String jsonArrayStr = "[\"Ford\", \"BMW\", \"Fiat\"]";
		
		/* 파싱용 jsonParser 생성자 생성 */
		JSONParser jsonParser = new JSONParser();
		
		/* JSONParser의 parse함수에 문자열(jsonStringStr)을 넣어 JSONObject로 파싱 */
		JSONObject jsonObj = (JSONObject) jsonParser.parse(jsonStringStr);
		
		/* JSONParser의 parse함수에 문자열(jsonArrayStr)을 넣어 JSONArray로 파싱 */
		JSONArray jsonArr = (JSONArray) jsonParser.parse(jsonArrayStr);
		
		/* jsonObj와 jsonArr를 콘솔에 출력 */
		System.out.println(jsonObj);
		System.out.println(jsonArr);
	}

 

json파일이 있다면 아래와 같이 파싱할 수도 있다.

Reader reader = new FileReader("D\\sample\\sample.json");        
JSONObject jsonObject = (JSONObject) parser.parse(reader);

 

 

결과화면

 

 

 

 

JSONObject 사용방법 및 샘플코드

 

 

샘플코드

public static void jsonExample() throws ParseException {
		/**
		 * jsonStringStr : JSON형식 객체 샘플
		 */
		String jsonStringStr = "{\"name\":\"John\", \"age\":30, \"car\":null, \"arr\": [1,2,3]}";
		
		/* 파싱용 jsonParser 생성자 생성 */
		JSONParser jsonParser = new JSONParser();
		
		/* JSONParser의 parse함수에 문자열(jsonStringStr)을 넣어 JSONObject로 파싱 */
		JSONObject jsonObj = (JSONObject) jsonParser.parse(jsonStringStr);
		/* jsonObj에 새로운 key:value를 put함 */
		jsonObj.put("newStr", "새로 추가한 문자열");
		/* jsonObj에서 key를 통해 원하는 값을 get하여 각 변수에 적재 */
		String name = jsonObj.get("name").toString();
		String age = jsonObj.get("age").toString();
		String newStr = jsonObj.get("newStr").toString();
		
		/* 콘솔에 결과물 출력*/
		System.out.println("jsonObj의 데이터 타입은 " + jsonObj.getClass().getName() + "입니다.");
		System.out.println("이름 : " + name);
		System.out.println("나이 : " + age);
		System.out.println("새문자열 : " + newStr);
	}

 

JSONparser를 안쓰고 그냥 Hashmap을 바로 넣을 수도 있다.

HashMap<String, String> map = new HashMap<String, String>();
JSONObject jsonObj = new JSONObject(map);

 

 

결과화면

 

 

 

 

JSONArray 사용방법 및 샘플코드

 

샘플코드

public static void jsonExample() throws ParseException {
        /**
         * jsonArrayStr : JSON형식 배열 샘플
         */
        String jsonArrayStr = "[\"Ford\", \"BMW\", \"Fiat\"]";

        /* 파싱용 jsonParser 생성자 생성 */
        JSONParser jsonParser = new JSONParser();

        /* JSONParser의 parse함수에 문자열(jsonArrayStr)을 넣어 JSONArray로 파싱 */
        JSONArray jsonArr = (JSONArray) jsonParser.parse(jsonArrayStr);

        /* jsonArr에 새로운 값 "Zip"을 추가함 */
        jsonArr.add("Zip");
        /* jsonArr의 0번째 값을 추출하여  ford에 적재 */
        String ford = (String) jsonArr.get(0);

        /* jsonArr의 데이터값 및 각 데이터를 콘솔에 출력함 */
        System.out.println("jsonArr의 데이터타입은 " + jsonArr.getClass().getName() + "입니다.");
        System.out.println(jsonArr);
        System.out.println(ford);
}

 

 

결과화면

 

 

 

json-simple 라이브러리를 통해 json을 쓴다면 아래 사이트가 도움이 될 것 같아 링크를 달아둔다.

튜토리얼이 아주 잘되어 있어서 공부하기에 좋을 것 같다. 끝

 

LEARN JSON.SIMPE 사이트 이동

 

 

 

 

 

 

728x90
profile

개발공작소

@모찌바라기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!