본문 바로가기

프로그래밍/안드로이드

[안드로이드][Java] Gson, 데이터베이스에 객체, 배열, 리스트 변환, 저장하기, json, array, list

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

 

Gson — Getting Started with Java-JSON Serialization & Deserialization

Mapping JSON to Java objects (and vice versa) is from the 90s. Gson is the modern solution to map between Java and JSON automatically with minimal effort. You just need to know how! Learn every detail about Gson's capabilities, configuration & customizatio

futurestud.io

 


728x90
반응형