728x90
반응형
작업이나 공부를 하면서 막힌 부분을 해결했던 것, 알고 싶었던 것이나 알리고 싶은 것을 올리는 블로그입니다
최대한 검증은 하겠지만 100% 정확한 글이 아니므로 단순 참고만 해주시길 바랍니다 :)
사실 공부한거 블로그 주인장이 안까먹을려고 올리는거임
Gson
데이터베이스에 객체나 배열을 직접 넣지는 못하고 String으로 변환해서 json형태로 넣어야 한다고 한다.
Gson은 구글의 json 장인이 만들었다고 하는 오픈소스 api이며 이것으로 쉽게 json 형태를 변환할 수 있다
Gson Import
https://github.com/google/gson
Gson 깃허브로 들어가서 최신 버전의 implementation을 복사해서 build.gradle의 dependencies에 붙여넣는다
Gson으로 Json과 데이터 변환 방법
객체 -> Json
package com.zynar.study_gson;
public class User {
private String name;
private String phoneNumber;
private int age;
private String gender;
private String DOB;
public User(String name, String phoneNumber, int age, String gender, String DOB) {
this.name = name;
this.phoneNumber = phoneNumber;
this.age = age;
this.gender = gender;
this.DOB = DOB;
}
// getter & setter
}
// Method 1
User user = new User("홍길동", "010-1234-5678", 23, "man", "2000-01-01");
Gson gson = new Gson();
String json = gson.toJson(user);
// Method 2
User user = new User("홍길동", "010-1234-5678", 23, "man", "2000-01-01");
String json = new Gson().toJson(user);
Log.d("json", json);
D/json: {"DOB":"2000-01-01","age":23,"gender":"man","name":"홍길동","phoneNumber":"010-1234-5678"}
Json -> 객체
String json = "{'DOB':'2000-01-01','age':23,'gender':'man','name':'홍길동','phoneNumber':'010-1234-5678'}";
User user = new Gson().fromJson(json, User.class);
Log.d("json", user.getName());
Log.d("json", user.getPhoneNumber());
Log.d("json", String.valueOf(user.getAge()));
Log.d("json", user.getGender());
Log.d("json", user.getDOB());
List<객체> -> Json
ArrayList도 마찬가지로 하면 된다
List<User> userList = new ArrayList<>();
for(int i=0; i<3; i++) {
User user = new User("홍길동" + i, "010-1234-000"+i, 20+i, "man", "2000-01-0"+i+1);
userList.add(user);
}
String json = new Gson().toJson(userList);
Log.d("json", json);
D/json:
[
{"DOB":"2000-01-001","age":20,"gender":"man","name":"홍길동0","phoneNumber":"010-1234-0000"},
{"DOB":"2000-01-011","age":21,"gender":"man","name":"홍길동1","phoneNumber":"010-1234-0001"},
{"DOB":"2000-01-021","age":22,"gender":"man","name":"홍길동2","phoneNumber":"010-1234-0002"}
]
Json -> List<객체>
List<User> userList1 = new Gson().fromJson(json, new TypeToken<List<User>>(){}.getType());
for(User user : userList1) {
Log.d("json", user.getName());
Log.d("json", user.getPhoneNumber());
Log.d("json", String.valueOf(user.getAge()));
Log.d("json", user.getGender());
Log.d("json", user.getDOB());
}
Json -> List<Integer>
List<User> userList = new Gson().fromJson(json, new TypeToken<List<Integer>>(){}.getType());
Json -> List<String>
List<User> userList = new Gson().fromJson(json, new TypeToken<List<String>>(){}.getType());
Json -> 객체 배열
String json = "[{'DOB':'2000-01-01','age':23,'gender':'man','name':'홍길동','phoneNumber':'010-1234-5678'},{'DOB':'2000-01-01','age':23,'gender':'man','name':'홍길동','phoneNumber':'010-1234-5678'},{'DOB':'2000-01-01','age':23,'gender':'man','name':'홍길동','phoneNumber':'010-1234-5678'}]";
User[] users = new Gson().fromJson(json, User[].class);
배열 -> Json
int[] arr = {1, 2, 3};
String json = new Gson().toJson(arr);
Json -> 배열
int[] arr1 = new Gson().fromJson(json, int[].class);
참고 링크
https://futurestud.io/tutorials/gson-getting-started-with-java-json-serialization-deserialization
728x90
반응형