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

2022. 9. 6. 00:30·정리 전 게시글/공부 관련
작업이나 공부를 하면서 막힌 부분을 해결했던 것, 알고 싶었던 것이나 알리고 싶은 것을 올리는 블로그입니다
최대한 검증은 하겠지만 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

 


저작자표시 (새창열림)

'정리 전 게시글 > 공부 관련' 카테고리의 다른 글

[안드로이드][Java] Edit Text 글 입력 위에서부터 입력하기  (0) 2022.09.07
[안드로이드][Java] 파이어베이스 스토리지 파일 업로드 및 다운로드 getDownloadUrl(), 파이어베이스 데이터 베이스 이미지 업로드  (0) 2022.09.06
[오류 해결] 안드로이드 스튜디오 파이어베이스 Ignoring header X-Firebase-Locale because its value was null. SDK 에뮬레이터 다운그레이드 방법  (0) 2022.09.03
[안드로이드 스튜디오, Java] R.string 자바 코드에서 불러오는법, context.getString(R.string.name), valueOf, toString  (0) 2022.08.15
[프로그래머스 Level 1, C] 수박수박수박수박수박수?  (0) 2022.08.10
'정리 전 게시글/공부 관련' 카테고리의 다른 글
  • [안드로이드][Java] Edit Text 글 입력 위에서부터 입력하기
  • [안드로이드][Java] 파이어베이스 스토리지 파일 업로드 및 다운로드 getDownloadUrl(), 파이어베이스 데이터 베이스 이미지 업로드
  • [오류 해결] 안드로이드 스튜디오 파이어베이스 Ignoring header X-Firebase-Locale because its value was null. SDK 에뮬레이터 다운그레이드 방법
  • [안드로이드 스튜디오, Java] R.string 자바 코드에서 불러오는법, context.getString(R.string.name), valueOf, toString
aptenia
aptenia
공부하면서 배운 것들
  • aptenia
    새벽의 아이디어
    aptenia
  • 전체
    오늘
    어제
    • 분류 전체보기 (279)
      • 논문 (0)
      • Roboracer (2)
      • 개발 아무거나 (1)
      • 일상 아무거나 (2)
      • 정리 전 게시글 (268)
        • 개발 관련 (25)
        • 정보 관련 (19)
        • 공부 관련 (224)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 네이버 블로그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    c언어초보
    빅데이터공모전
    마인크래프트강화스크립트
    일본규슈공업대학교
    마인크래프트스크립트
    이것이자바다확인문제
    스크롤바CSS
    마크스크립트
    마인크래프트
    C언어강좌
    티스토리스킨편집
    티스토리HTML
    파이어베이스
    반복하지않는수
    백준
    프로그래머스PCCE
    공개SW개발자대회
    프로그래머스
    안드로이드
    C언어
    C++강좌
    이것이자바다
    콜라츠추측
    자바
    캡스톤디자인
    이것이자바다연습문제
    티스토리반응형2스킨편집
    컨텍스트스위칭
    파이썬
    마크
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
aptenia
[안드로이드][Java] Gson, 데이터베이스에 객체, 배열, 리스트 변환, 저장하기, json, array, list
상단으로

티스토리툴바