JSON 객체, 배열 사용 방법💥

eunsiver·2023년 2월 6일

Java

목록 보기
5/7

JSON을 많이 쓰는 이유?

  • 데이터 전달, 교환, 저장할때 가볍고, 텍스트 기반, js기반

1) JSON 객체

  • 중괄호 사용
  • JSON에서 객체란 key:value의 한 쌍으로 이루어진 정렬되지 않은 속성들의 집합
  • 콤마로 구분하여 여러개의 속성을 가질 수 있다
  • 문자열은 반드시 큰따옴표("")로 묶어준다
{
 	"name":"홍길동",
  	"age":20,
  	"nationality":"대한민국",
  	"hobby":"영화보기"
}

2) JSON 객체 안의 객체

  • 계층적 구조
{
  	"group1":{
  		"name":"홍길동",
  		"age":20,
  		"nationality":"대한민국",
  		"hobby":"영화보기",
      	"category":['1','2','3'],
  		"company":{
    		"cname":"XX원자력 발전소",
      		"cphone":"02-5133-5111",
      		"caddress":"경기도 용인시"
   		 }
	}
}

3) JSON 배열

  • 대괄호 []사용
person=[
	  {"name":"홍길동", "age":20, 	"nationality":"한국"},
	  {"name":"이순신", "age":30, "nationality":"미국"},
	  {"name":"강감찬", "age":40, "nationality":"영국"}
  ]

JSON 데이터 객체와 문자열로 변환

  • JSON.parse(), JSON.stringify()

JSON.parse(jsonText): JSON 형식의 텍스트 문자열을 목적에 맞게 객체로 변환

JSON 데이터를 웹페이지로 출력하기

'경기데이터드림'에 의한 Open API 사용방법
1) 로그인 후 개인 인증키 발급
2) URL에 KEY값에 발급 받은 인증키 값을 넣는다.

https://openapi.gg.go.kr/MovieTheater?KEY=[개인인증키]
이 URL을 입력할 경우, XML로 나온다
JSON으로 변경하고 싶을 때는 Type=json을 추가해준다
https://openapi.gg.go.kr/MovieTheater?KEY=[개인인증키]&Type=json
pSize로 출력하고 싶은 개수도 조절이 가능하다

잘 출력되는 것을 확인할 수 있다.

java Eclipse에서 공공데이터 api를 json으로 출력해보기

package algo;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class Main {
	public static void main(String args[]) {
		// 버퍼 이용: BufferedReader 버퍼를 이용해서 읽고 쓰는 함수
		// 버퍼: 입출력 속도 향상을 위해서 데이터를 일시적으로 메모리 영역의 한 곳에 모아두는 것
		// 버퍼의 장점: 버퍼를 이용하기 때문에 입출력 관련 처리 작업을 매우 빠르게 할 수 있다

		BufferedReader br = null;
		try {
			// 공공 API 인증키 및 전체 풀 주소
			// 변수에 여러 값을 넣어서 주소 체계를 만들어야 한다면 StringBuilder

			// String: 불변성을 가지므로 문자열을 더할 때 매번 새로운 객체를 참조하는 방식 --> 값 변경X
			// StringBuilder: 문자열을 더해 나갈 때 새로운 객체를 매번 생성하는 것이 아니라 기존 데이터 값에 추가하는 방식
			// : mutable 속성이고, append(), insert(), delete() 등을 사용해서 값을 변경
			// 보통 공공API 방식 --> StringBuilder 사용

			String urlStr = "https://openapi.gg.go.kr/MovieTheater?KEY=////&Type=json";
			URL url = new URL(urlStr);

			// openConnection() 메서드를 이용한 연결
			// URL 주소의 원격 객체에 접속한 뒤 통신할 수 있는 URLConnection 객체 리턴
			HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
			urlConn.setRequestMethod("GET");
			urlConn.setRequestProperty("Content-type", "application/json");
			System.out.println("Response Code: " + urlConn.getResponseCode());

			// InputStreamReader 클래스로 읽기
			br = new BufferedReader(new InputStreamReader(urlConn.getInputStream(), "UTF-8"));

			String rst = "";
			String line;
			while ((line = br.readLine()) != null) {
				rst += line + "\n";
			}
			//System.out.println(rst);
			
			
			br.close();
			urlConn.disconnect();

		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
	}

}

profile
Let's study!

0개의 댓글