지금까지는 프론트단에서 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을 쓴다면 아래 사이트가 도움이 될 것 같아 링크를 달아둔다.
튜토리얼이 아주 잘되어 있어서 공부하기에 좋을 것 같다. 끝