Android Study

JSON 을 SharedPreference 에 저장하여 사용하기

85chong 2019. 4. 2. 17:19
728x90
반응형
SMALL

안드로이드는 보통 서버와 통신할때 json 을 자주 사용한다. 가져온 데이터는 해당 디바이스에 저장하고 가져다 사용하기도 한다. 근데 SharedPreference 에서는 JSON 형식을 그대로 저장할수없고, 정해진 형식에 맞게 변환후 저장해서 사용해야한다.

 

예제 준비> 서버에서 데이터를 받아오는 클래스( 예로, Res_testData 라고 하겠음) 

<저장소에 저장할 함수>

public void setStringPreferences(Context mContext, String key, String value) {
   if (mContext == null) {
       mContext = getApplicationContext();
   }
   SharedPreferences pref = mContext.getSharedPreferences(BaseConstant.PRE_KEY, mContext.MODE_PRIVATE);
   SharedPreferences.Editor editor = pref.edit();
   editor.putString(key, value);
   editor.commit();
}

<저장소에서 가져올 함수>

public String getStringPreferences(Context mContext, String key) {
    if (mContext == null) {
        mContext = getApplicationContext();
    }
    SharedPreferences pref = mContext.getSharedPreferences(BaseConstant.PRE_KEY, mContext.MODE_PRIVATE);
    return pref.getString(key, "");
}

 

String형태로 저장및 가져오는 방법을 적겠다. 이때 공통적으로 사용하는게 구글에서 제공하는 Gson 이다. 이를 이용하여 변환을 해보겠다.

 

*  [ Res_testData => Json => String => SharedPreference ]

저장할때에는 String 으로 변환후 저장해준다.

 

ex)전역변수를 준비해준다.

Res_testData res_testdata; 
Gson gson = new Gson( );
//context(있다고 가정하겠음)

String strJsonSaveDateValue = gson.toJson(res_testdata);
setStringPreferences(context , "ResDataKeyName" , strJsonSaveDateValue);

- 저장하기 끝 -

 

 

이제 저장한 데이터를 가져오는 방법이다.

* [ SharedPreference => String => Json => Res_testData ]

가져올때는 저장할때의 반대방법으로 하면된다.

 

ex) 위의 예제들을 모두 가져다 사용하겠다.

JsonParser parser = new JsonParser( );
String strGetSharedData = getStringPreferences(context , "ResDataKeyName");
JsonElement json_element = parser.parse(strGetSharedData);
res_testdata = gson.fromJson(json_element , Res_testData.class);

- 가져오기 끝 -

 

 

 

- 끝 -