본문으로 바로가기

JSON 라이브러리

category JAVA 2019. 12. 18. 11:37

Java Script Object Notation(JSON) 이란 ? 


JSON의 필요성

'형식이 일정하지 않은 문자열'에서 원하는 정보를 빼내려고 하는 경우, 

아래 처럼 복잡한 split() 메서드를 이용해서 배열의 방에 하나씩 담는 작업을 이중으로 해야하는 불편함이 발생한다.

 

[예시]

public class MainClass06 {
	public static void main(String[] args) {
		
        String info="num:1, name:김구라, addr:노량진";
		
		//위의 문자열을 회원의 정보를 추출해서 변수에 담아보세요.
		int num=0;
		String name=null;
		String addr=null;
		
		String[] result=info.split(","); //split(",") : 콤마(,)를 기준으로  문자열을 나눈다.

		num=Integer.parseInt(result[0].split(":")[1]);
		name=result[1].split(":")[1];
		addr=result[2].split(":")[1];
	}
}

콘솔 출력 결과

 

 

JSON 라이브러리를 사용하면 형식이 일정하지 않은 문자열의 data를 불러오기에 편리하다.

 

 

 

JSON 라이브러리 사용하기


JSON 라이브러리를 사용하려면 json 형식의 문자열에 맞춰 data를 입력해주어야한다.

 

1. JSONArray 사용하기

1-1. JSONArray 에 값 넣기

public class MainClass01 {
	public static void main(String[] args) {
    	//1. JSONArray 객체 만들기
		JSONArray jsonArr=new JSONArray();
        //2. JSONArray 객체에 put()메소드를 사용하여 data 넣기
		jsonArr.put("김구라");
		jsonArr.put("해골");
		jsonArr.put("원숭이");

		//3. JSONArray 객체 안에 있는 정보를 JSON 문자열로 얻어내기
		String result1=jsonArr.toString();
		
		System.out.println(result1);
	}
}

콘솔창에 출력해보기

 

 

1-2. JSONArray에 있는 값 출력 해보기

public class MainClass07 {
	public static void main(String[] args) {
		String info="[10, 20, 30, 40, 50]";
		
		JSONArray arr=new JSONArray(info);
		
		System.out.println(arr.getInt(0));  //index를 통해서 접근한다.
		System.out.println(arr.getInt(1));
		System.out.println(arr.getInt(2));
		System.out.println(arr.getInt(3));
		System.out.println(arr.getInt(4));
		
		for(int i=0; i<arr.length(); i++) {
			System.out.println(arr.getInt(i));
		}
	}
}

 

 

 

 

 

 

2. JSONObject 사용하기

2-1. JSONObject에 값 넣기

(1) num, name, boolean type 데이터를 JSONObject 으로 바꾸기

public class MainClass02 {
	public static void main(String[] args) {
    	//1. JSONObject 객체 생성하기 
		JSONObject jsonObj=new JSONObject();
        //2. JSONObject 객체에 put()메소드를 사용해서 key값과 value값 넣기
		jsonObj.put("num", 1);
		jsonObj.put("name", "김구라");
		jsonObj.put("isMan", true);
		//3. JSONObject 객체를 String type으로 바꾸기
		String result=jsonObj.toString();
		System.out.println(result);
	}
}

콘솔창에 출력해보기

 

 

(2) List type의 데이터 JSONObject 으로 바꾸기

public class MainClass03 {
	public static void main(String[] args) {
		JSONObject jsonObj=new JSONObject();
		jsonObj.put("type", "a");
		
		List<String>names=new ArrayList<String>();
		names.add("김구라");
		names.add("해골");
		names.add("원숭이");
		
		jsonObj.put("names", names);
		
		String result=jsonObj.toString();
		System.out.println(result);
	}
}

콘솔창에 출력 해보기

 

 

(3)Map type의 data를  JSONObject 으로 바꾸기

public class MainClass09 {
	public static void main(String[] args) {
		//HashMap에 담겨있는 정보를 JSONObject type의 data로 변경해서 쉽게 정보를 추출할 수 있다.
		Map<String, Object> map=new HashMap<>();
		map.put("num", 2);
		map.put("name", "해골");
		map.put(addr, "행신동");
		
        //JSONObject 생성자에 HashMap객체의 참조값을 전달하여 JSONObject type의 data로 변경해줌
		JSONObject obj3=new JSONObject(map); 
		//JSONObject type에서 String type의 data로 변경
		String json4=obj3.toString();
	}
}

public class MainClass09 {
	public static void main(String[] args) {
		//1. 변수에 담겨 있는 문자열을 JSONObject 객체에 담기
		//따로 작성되어 있는 data을 json 형식의 JSONObject 형식으로 변경하기
		int num=1;
		String name="김구라";
		String addr="노량진";
		
		//String json="{\"num\":"+num+ ...}"; 이렇게 작성하기 너무 불편
		
		//put() 메소드를 이용해 편하게 담기
		JSONObject obj=new JSONObject();
		obj.put("num", 1);
		obj.put("name", "김구라");
		obj.put("addr", "노량진");
		
		System.out.println(obj); //JSONObject type으로 출력됨 {"num":1,"name":"김구라","addr":"노량진"}
		
		String json2=obj.toString();
		
		//2. HashMap에 담겨있는 정보를 JSONObject type의 data로 변경해서 쉽게 정보를 추출할 수 있다.
		Map<String, Object> map=new HashMap<>();
		map.put("num", 2);
		map.put("name", "해골");
		map.put(addr, "행신동");
        
		JSONObject obj3=new JSONObject(map); //JSONObject생성자에 HashMap객체를 변경함
		String json4=obj3.toString();
	}
}

 

 

 

 

 

2-1. JSONObject에서 값 출력하기

public class MainClass04 {
	public static void main(String[] args) {
		//json 문자열 만들기
		String json="{\"num\":1, \"name\":\"김구라\", \"isMan\":true}";
        
		//json 문자열을 이용해서 JSONObject 만들기
		JSONObject jsonObj=new JSONObject(json);
		int num=jsonObj.getInt("num");
		String name=jsonObj.getString("name");
		boolean isMan=jsonObj.getBoolean("isMan");
	}
}

콘솔창에 출력해보기

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'JAVA' 카테고리의 다른 글

JAVA Template 등록하기  (0) 2019.12.21
JDBC / JAVA 와 DB 연결 / CONNECTION  (0) 2019.12.18
JSON 라이브러리 Build Path  (0) 2019.12.17
Socket (소켓) 통신 과 TCP / IP 통신  (0) 2019.12.17
Multi Thread(멀티스레드)  (0) 2019.12.13