[Java] HTTP - JSON
AJAX 는 JavaScript에서 XML을 파싱해오는 기술입니다.
하지만 요새는 XML데이터가 많이 쓰이지 않습니다.
XML을 대신해 가독성이 좋으면서 JavaScript에 친화된 형태를
JSON(JavaScript Object Notation)이라고 합니다.
JSON은 DB에 있는 데이터를 JavaScript문법으로 표현한 것입니다.
Java에서 배열은 { 1, 2, 3 }
중괄호를 사용하는 반면,
JavaScript 배열은 [1, 2, 3]
대괄호를 사용하고
Java 객체 : Dog d = new Dog();
d.setName("멍멍2")
d.setAge(3);
자바에서는 객체를 위와 같이 생성하는 반면,
JavaScript 객체 : { name : "멍멍3", age : 3}
JavaScript 객체는 중괄호를 사용합니다.
이제 JSON의 데이터를 살펴보겠습니다.
Current weather data - OpenWeatherMap
Current weather data - OpenWeatherMap
Ulla OpenWeather AI assistant Chat with Ulla Ask her anything about OpenWeather products
openweathermap.org
위 사이트에서
Built-in API request by city name의 주소를 살펴보면
https://api.openweathermap.org/data/2.5/weather?q={city name}&appid={API key}
중괄호가 있는데
요청 파라미터라고 부릅니다.
중괄호에는 도시의 이름 파라미터와 인증키가 들어갑니다.
파라미터를 모두 입력하고 페이지를 열어보면
다음과 같이 JSON형태로 된 데이터가 입력됩니다
크롭 웹스토어의 JSON Viewer를 사용하면
좀 더 가시성 좋게 데이터를 볼 수 있습니다.
그리고 주소뒤에
파라미터를 추가할 수 있는데
&units=metric&lang=kr
&기호를 써서 주소뒤에 덧붙일 수 있습니다.
이렇게 파라미터 설정에 맞게 바뀌게 됩니다.
try {
System.out.println("도시의 이름은");
Scanner sc = new Scanner(System.in);
String city = sc.next();
String address = "https://api.openweathermap.org/data/2.5/weather?q=" + city
+ "&appid=&units=metric&lang=kr";
InputStream is = puftHttpClient.download(address);
String str = puftHttpClient.convert(is, "UTF-8");
System.out.println(str);
} catch (Exception e) {
// TODO: handle exception
}
HTTP통신 라이브러리를 사용해서
화면에 출력까지 해보았습니다.
HTTP통신은 XML과 같은 형식이기 때문에
[Java] 기상청 (HTTP 실습)
웹사이트는 보통사람들이 DB를 쓰기 편하게 구현해 놓은 페이지입니다.개발자가 데이터만 가져오고 싶을 때 데이터를 특정한 형식으로 표현해줘야 하는데DB에 있는 데이터를 표현하는 형식은 XM
pufrontend.tistory.com
위 포스트를 참고해주시면 감사하겠습니다.
"sys": {
"type": 1,
"id": 8090,
"country": "KR",
"sunrise": 1734561607,
"sunset": 1734596241
},
다음 JSON 데이터에서
country데이터를 받아오려고 할 때는
Parsing이 필요합니다.
여기서 sys와 country와 같이 왼쪽에 위치하는 것은 키값이고
오른쪽에 오는 데이터는 value값이라고합니다.
Parsing을 하기 위해서는
새로운 jar파일이 필요합니다.
위 사이트에 들어가서
JSON.SIMPLE.jar 파일을 받아줍니다.
그리고 jar 파일을 buildpath를 사용해서 추가하면 됩니다.
추가가 되었다면 Eclipse로 돌아와서
Parsing을 위한 객체를 선언해줍니다.
JSONParser jp = new JSONParser();
배열일 경우에는 다음과 같이 생성합니다.
JSONArray ja = (JSONArray) jp.parse(str);
배열 객체 변수를 생성하고
객체일 경우
JSONObject jo = (JSONObject) jp.parse(str);
객체 변수를 생성해줍니다.
위 데이터에서 country에 접근하려면sys라는 객체에 먼저 접근을 해야합니다.이때는 내장되어있는 기능인 get메소드를 씁니다.
JSONObject sys = (JSONObject) jo.get("sys");
다음은 country에 접근해서 값을 불러오겠습니다.
String country = (String) sys.get("country");
System.out.println(country);
KR
잘 출력되네요.
이번 시간에는 JSON이라는 개념과
데이터를 끌어와서 출력까지 해봤는데요.
XML에 비해서 코드도 쉽고
가시성도 좋아서 사용하기 수월한 것 같습니다.
다만 객체 형식과 배열 형식이 섞여 있기 때문에
객체 선언을 적절히 해주는 것이 중요한 것 같습니다.