Java/이론

[Java] HTTP - JSON

Puft 2024. 12. 19. 12:06

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 실습)

 

[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파일이 필요합니다.

 

https://mvnrepository.com/

 

위 사이트에 들어가서

 

 

 

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에 비해서 코드도 쉽고

가시성도 좋아서 사용하기 수월한 것 같습니다.

다만 객체 형식과 배열 형식이 섞여 있기 때문에

객체 선언을 적절히 해주는 것이 중요한 것 같습니다.