메서드
package com.mtcoding.ex11;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
// 책임 : 저장소(다른 사람 서버, HDD, DB)에서 데이터 가져오기
public class Repository {
// 책임 : 통신에서 다운로드하는 책임
public String download(String site) throws Exception {
// 1. 소켓 연결 완료
URL url = new URL(site);
HttpURLConnection socket = (HttpURLConnection) url.openConnection();
// 2. 읽기 버퍼 연결
BufferedReader br = new BufferedReader(
new InputStreamReader(socket.getInputStream())
);
// 3. 다운로드
String json = "";
while (true) {
String line = br.readLine(); // 값이 없으면 null을 준다.
if (line == null) break;
json = json + line; // if를 위에 안하면 {}null이 붙어서 파싱이 제대로 안 될 수도 있음
}
return json;
}
}UserApp (User 클래스 + UserApp main)
package com.mtcoding.ex11;
import com.google.gson.Gson;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
class User {
private Integer id;
private String name;
private String username;
private String email;
private String phone;
private String website;
private Company company;
@Setter
@Getter
public static class Company {
private String name;
private String catchPhrase;
private String bs;
}
}
public class UserApp {
public static void main(String[] args) {
try {
// 1. 다운로드 Repository download()
Repository repo = new Repository();
String json = repo.download("https://jsonplaceholder.typicode.com/users/1");
// 2. 다운로드 확인
// System.out.println();
// 3. User 클래스 완성하기
// 4. 오브젝트로 변환 (json -> User) - gson 필요
Gson gson = new Gson();
User user = gson.fromJson(json, User.class);
// 5. 변환 확인
// System.out.println();
// 6. 콘솔에 유저정보 출력
System.out.println("ID : " + user.getId());
System.out.println("Name : " + user.getName());
System.out.println("UserName : " + user.getUsername());
System.out.println("E-mail : " + user.getEmail());
System.out.println("Phone : " + user.getPhone());
System.out.println("WebSite : " + user.getWebsite());
System.out.println("CompanyName : " + user.getCompany().getName());
System.out.println("CompanyCatchPhrase : " + user.getCompany().getCatchPhrase());
System.out.println("CompanyBs : " + user.getCompany().getBs());
} catch (Exception e) {
e.printStackTrace();
}
}
}

Share article