package ch01;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class GsonExample {
public static void main(String[] args) {
//
Student student1 = new Student("고길동", 40, "애완학과");
Student student2 = new Student("둘리", 5, "문제학과");
//
Student[] studentArr = {student1, student2};
// --> 특정 형식(구조화) 있는 문자열로 변환 하고 싶다.. --> JSON 형태
Gson gson = new GsonBuilder().setPrettyPrinting().create();
// 객체를 --> json 형식에 문자열로 변환 시켜! --> 메서드 toJson()
String student1Str = gson.toJson(student1);
System.out.println(student1Str);
// setPrettyPrinting -> 이쁘게 출력하라 옵션..
Gson gson2 = new Gson();
String studednt2Str = gson2.toJson(student2);
System.out.println(studednt2Str);
// 객체에서 ---> 문자열 형태로 가능 그럼 반대로는 어떻게 하지??
// 문자열에서 ---> 클래스 형태로 어떻게 변경할까?
// Object 형태로 변환
Student studentObject = gson.fromJson(student1Str, Student.class);
System.err.println(studentObject.getName());
// 배열 형태로 변환
Student[] StringArr = gson.fromJson(gson.toJson(studentArr), Student[].class);
System.err.println(StringArr);
for (Student student : StringArr) {
System.err.println(student.toString());
}
System.out.println("-----------------------------");
System.out.println(gson.toJson(StringArr));
}
}
package ch02;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class MyHttpAlbumClient {
public static void main(String[] args) {
// 순수 자바코드에서 HTTP 통신
// 1. 서버 주소 경로
// 2. URL 클래스
// 3. url.openConnection() <--- 스트림 I/O
try {
URL url = new URL("https://jsonplaceholder.typicode.com/albums/1");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Content-type", "application/json");
// 응답 코드 확인
int responseCode = conn.getResponseCode();
System.out.println("response code : " + responseCode);
// HTTP 응답 메세지에 데이터를 추출 [] -- Stream --- []
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
StringBuffer buffer = new StringBuffer();
while( (inputLine = in.readLine()) != null ) {
buffer.append(inputLine);
}
in.close();
System.out.println(buffer.toString());
System.err.println("-------------------------------");
// gson lib 활용
//Gson gson = new Gson();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
Album albumDTO = gson.fromJson(buffer.toString(), Album.class);
System.out.println(albumDTO.getId());
System.out.println(albumDTO.getUserId());
System.out.println(albumDTO.getTitle());
} catch (IOException e) {
e.printStackTrace();
}
} // end of main
}
package ch02;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
/**
* JSON Array 형태를 파싱 해보자.
*/
public class MyHttpAlbumListClient {
public static void main(String[] args) {
// 순수 자바코드에서 HTTP 통신
// 1. 서버 주소 경로
// 2. URL 클래스
// 3. url.openConnection() <--- 스트림 I/O
try {
URL url = new URL("https://jsonplaceholder.typicode.com/albums");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Content-type", "application/json");
// 응답 코드 확인
int responseCode = conn.getResponseCode();
System.out.println("response code : " + responseCode);
// HTTP 응답 메세지에 데이터를 추출 [] -- Stream --- []
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
StringBuffer buffer = new StringBuffer();
while( (inputLine = in.readLine()) != null ) {
buffer.append(inputLine);
}
in.close();
System.out.println(buffer.toString());
System.err.println("-------------------------------");
// gson lib 활용
//Gson gson = new Gson();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
// 하나의 JSON Object 형태 파싱
// Album albumDTO = gson.fromJson(buffer.toString(), Album.class);
// [{...},{...},{...}]
// Gson 제공하는 Type 이라는 데이터 타입을 활용할 수 있다.
//Json 배열 형태를 쉽게 파싱하는 방법 -> TypeToken 안에 List<T> 을 활용 한다.
Type albumType = new TypeToken<List<Album>>(){}.getType();
List<Album> albumList = gson.fromJson(buffer.toString(), albumType);
System.out.println(albumList.size());
for(Album a : albumList ) {
System.out.println(a.toString());
}
} catch (IOException e) {
e.printStackTrace();
}
} // end of main
}
'Java' 카테고리의 다른 글
JDBC 아키텍처 (0) | 2024.06.12 |
---|---|
JDBC (0) | 2024.06.12 |
공공데이터포탈 (0) | 2024.06.07 |
자바코드로 HttpServer 만들기 (0) | 2024.06.07 |
소켓을 활용한 HTTP 통신 (0) | 2024.06.07 |