json파일을 이용해 데이터를 다룰 때, 서버가 아니라 assets폴더에 넣어 사용하는 방법
의외로 gson과 asset 데이터를 같이 쓰는 예제가 없어 많이 찾아 헤맸다.
간단하게 서술하자면,
assetManager 클래스를 이용해 json 파일을 가져온 뒤,
inputStream객체에 데이터를 넣고 Gson객체를 만든 뒤
Reader객체에 담아 json 데이터를 넣을 객체에 fromJson()을 이용해 넣는다.
Source
MainActivity.java
AssetManager assetManager = getResources().getAssets(); // 리소스를 받아온다
InputStream source = null; // inputStream객체 생성
try {
source = assetManager.open("a.json"); // assets폴더의 a.json 파일을 가져온다
} catch (IOException ie) {
ie.printStackTrace();
}
Gson gson = new Gson();
Reader reader = new InputStreamReader(source); // 데이터를 Reader에 담는다
A a = gson.fromJson(reader, A.class); // fromJson()으로 A 객체에 데이터 넣는다.
aMapping(ret, A);
public void aMapping(View view, A info) {
// 데이터 맵핑
((TextView) view.findViewById(View_ID)).setText(info.title);
}
A.java
public class A {
@SerializedName("id") // 데이터의 이름을 json key와 맞추거나 @SerializedName 에 key값을 맵핑한다
public String data;
}
댓글