Notice
Recent Posts
Recent Comments
Link
설.현.아빠
[학습자료] 안드로이드에서 JSON 처리 방법 본문
안녕하세요~ 매번 눈팅만하고 필요한 자료만 찾는 도중에
JSON 에 관련된 글이 없어서 간단하게나마 올려봅니다~.
이미 알고 계신분들도 많겠지만 저처럼 완전 초보는 이글을 읽고 조금이나마 도움이 됐으면 하는 바람입니다..
우선 json에 대한 기초도 없었던 저는 이번 프로젝트로 인해서 고생좀 했습니다 ㅜㅜ
간단하게 json 에대해 설명하자면 xml 의 무거움을 또 가독성(?)을 개선하고자 txt 파일로 만들어져있고
key 값과 value 값으로 구분이 됩니다...(제가 어렴풋이 이해한 개념이니.. 안맞더라도 양해를..)
예를 들어 home.json 이란 파일이 존재하고 이 내용을 보게 되면
{
"title":"TEST",
"title_img":"title.png",
"buttons":[
{
"id":"home01",
"title":"테스트버튼",
"icon_img":"test_btn.png",
"text_img":"text_img.png"
},
{
"id":"home02",
"title":"테스트버튼2",
"icon_img":"test_btn2.png",
"text_img":"text_img2.png"
}
]
}
각줄의 첫번째 "" 안의 값은 key 값이 되며, 두번째 값은 value가 됩니다.
"buttons"의 경우 [ ] 로 묶여있는데 이것이 배열을 의마하게 됩니다.
위의 경우 {} 두번 반복되는 것은 배열buttons[ ]의 0번째 1번째가 되는거겠지요 ^^;;
배열안의 값도 key값과 value 값으로 구분되어 집니다...
간단? 하게나마 json파일 형식에 대해 말씀드린거구요(다시 말씀드리지만 저처럼 완전 초보님들에게만....)
자 이제 위와 같은 json 파일을 안드로이드 프로젝트에서 사용하고자 합니다.
안드로이드 api 에서 제공하는 json 의 사용은 한계점이 있습니다. json의 사용법은 관련 자료를 찾아보세요.
(지금 제가 하는 프로젝트는 위와 같이 json 파일로 받아서 각 화면의 이미지, 타이틀, list, url 등의 정보를 받아서 처리하도록 되어있습니다.)
처음에 별별자료를 다 읽어봤지만 안드로이드에서 사용하는 예제가 영문으로 되어있어서 대략난감했습니다...
한글로 된 블로그도 있었지만 제수준에서는 이해하기가;;;
우선 프로젝트의 assets 폴더 안에 json폴더를 생성해주었고 그안에 위와 같은 home.json 파일을 만들어주었습니다.
Home.java 라는 클래스를 생성해주고 json 파일을 읽어 오는 방법은
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//asset 폴더의 내용을 가져오기
AssetManager assetManager = getResources().getAssets();
try{
//사용하고자 하는 json 파일 open
AssetInputStream ais = (AssetInputStream)assetManager.open("json/home.json");
//stream을 리더로 읽기
BufferedReader br = new BufferedReader(new InputStream(ais));
//StringBuilder 사용
StringBuilder sb = new StringBuilder();
//json파일의 내용이 용량이 클경우 Stirng 의 허용점인 4096 byte 를 넘어가면 오류발생
int bufferSize = 1024 * 1024;
//char 로 버프 싸이즈 만큼 담기위해 선언
char readBuf [] = new char[bufferSize];
int resultSize = 0;
//파일의 전체 내용 읽어오기
while((resultSize = br.read(readBuf)) != -1){
if(resultSize == bufferSize){
sb.append(readBuf);
}else{
for(int i = 0; i < resultSize; i++){
//StringBuilder 에 append
sb.append(readBuf[i]);
}
}
}
// 수정 - 새로운 문자열을 만들어서 내부 버퍼의 내용을 복사하고 반환한다.
String jString = sb.toString();
//JSONObject 얻어 오기
JSONObject jsonObject = new JSONObject(jString);
//json value 값 얻기
Stirng title = jsonObject.getString("title").toStirng(); //결과값 TEST
//이미지 사용법에 대해서는 이미 아시리라 믿고 패스 할께요;;
//JSONArray 사용법
JSONArray jArr = new JSONArray(jsonObject.getStirng("buttos"));
//StringArray에 buttons 의 title 키의 value값을 담겠습니다.
String btnTitle [] = new Stirng[jArr.length()];
for(int i = 0; i < jArr.length(); i++){
btnTitle [i] = jArr.getJSONObject(i).getString("title").toString();
//출력하여 결과 얻기
system.out.println("btnTitle[" + i + "]=" + btnTitle[i]);
}
}catch(JSONException je){
Log.E("jsonErr", "json에러입니당~", je);
}catch(Exception e){
Log.E("execption", "파일이 없나봐용", e);
}
}
휴 일일이 쓰려니 힘드네요;; 위와 같이 코딩을 하여 json파일에 들어있는 값들을 적용할수가 있습니다.
이방법 알아내느라 아주 쬐금 고생을 했드랬죠 -_-;; 머라가 나빠서 이해력 속도가 느린;;;
이미지 사용법에 관해서는 여기 훌륭하신 분들의 강좌를 보고 좀 변형해서 했기에;;
제방법으로 하다가 머리가 아프실지 몰라 감히 올리지는 못하였네요 ㅎㅎㅎ
이상으로 json 파일 사용에 대한 간단한 글을 마치도록 할께요...
허접한 글이지만 저처럼 헤매시는 분들에게 조금이나마 도움이 되었으면 좋겠네요~~^^;;
JSON 에 관련된 글이 없어서 간단하게나마 올려봅니다~.
이미 알고 계신분들도 많겠지만 저처럼 완전 초보는 이글을 읽고 조금이나마 도움이 됐으면 하는 바람입니다..
우선 json에 대한 기초도 없었던 저는 이번 프로젝트로 인해서 고생좀 했습니다 ㅜㅜ
간단하게 json 에대해 설명하자면 xml 의 무거움을 또 가독성(?)을 개선하고자 txt 파일로 만들어져있고
key 값과 value 값으로 구분이 됩니다...(제가 어렴풋이 이해한 개념이니.. 안맞더라도 양해를..)
예를 들어 home.json 이란 파일이 존재하고 이 내용을 보게 되면
{
"title":"TEST",
"title_img":"title.png",
"buttons":[
{
"id":"home01",
"title":"테스트버튼",
"icon_img":"test_btn.png",
"text_img":"text_img.png"
},
{
"id":"home02",
"title":"테스트버튼2",
"icon_img":"test_btn2.png",
"text_img":"text_img2.png"
}
]
}
각줄의 첫번째 "" 안의 값은 key 값이 되며, 두번째 값은 value가 됩니다.
"buttons"의 경우 [ ] 로 묶여있는데 이것이 배열을 의마하게 됩니다.
위의 경우 {} 두번 반복되는 것은 배열buttons[ ]의 0번째 1번째가 되는거겠지요 ^^;;
배열안의 값도 key값과 value 값으로 구분되어 집니다...
간단? 하게나마 json파일 형식에 대해 말씀드린거구요(다시 말씀드리지만 저처럼 완전 초보님들에게만....)
자 이제 위와 같은 json 파일을 안드로이드 프로젝트에서 사용하고자 합니다.
안드로이드 api 에서 제공하는 json 의 사용은 한계점이 있습니다. json의 사용법은 관련 자료를 찾아보세요.
(지금 제가 하는 프로젝트는 위와 같이 json 파일로 받아서 각 화면의 이미지, 타이틀, list, url 등의 정보를 받아서 처리하도록 되어있습니다.)
처음에 별별자료를 다 읽어봤지만 안드로이드에서 사용하는 예제가 영문으로 되어있어서 대략난감했습니다...
한글로 된 블로그도 있었지만 제수준에서는 이해하기가;;;
우선 프로젝트의 assets 폴더 안에 json폴더를 생성해주었고 그안에 위와 같은 home.json 파일을 만들어주었습니다.
Home.java 라는 클래스를 생성해주고 json 파일을 읽어 오는 방법은
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//asset 폴더의 내용을 가져오기
AssetManager assetManager = getResources().getAssets();
try{
//사용하고자 하는 json 파일 open
AssetInputStream ais = (AssetInputStream)assetManager.open("json/home.json");
//stream을 리더로 읽기
BufferedReader br = new BufferedReader(new InputStream(ais));
//StringBuilder 사용
StringBuilder sb = new StringBuilder();
//json파일의 내용이 용량이 클경우 Stirng 의 허용점인 4096 byte 를 넘어가면 오류발생
int bufferSize = 1024 * 1024;
//char 로 버프 싸이즈 만큼 담기위해 선언
char readBuf [] = new char[bufferSize];
int resultSize = 0;
//파일의 전체 내용 읽어오기
while((resultSize = br.read(readBuf)) != -1){
if(resultSize == bufferSize){
sb.append(readBuf);
}else{
for(int i = 0; i < resultSize; i++){
//StringBuilder 에 append
sb.append(readBuf[i]);
}
}
}
// 수정 - 새로운 문자열을 만들어서 내부 버퍼의 내용을 복사하고 반환한다.
String jString = sb.toString();
//JSONObject 얻어 오기
JSONObject jsonObject = new JSONObject(jString);
//json value 값 얻기
Stirng title = jsonObject.getString("title").toStirng(); //결과값 TEST
//이미지 사용법에 대해서는 이미 아시리라 믿고 패스 할께요;;
//JSONArray 사용법
JSONArray jArr = new JSONArray(jsonObject.getStirng("buttos"));
//StringArray에 buttons 의 title 키의 value값을 담겠습니다.
String btnTitle [] = new Stirng[jArr.length()];
for(int i = 0; i < jArr.length(); i++){
btnTitle [i] = jArr.getJSONObject(i).getString("title").toString();
//출력하여 결과 얻기
system.out.println("btnTitle[" + i + "]=" + btnTitle[i]);
}
}catch(JSONException je){
Log.E("jsonErr", "json에러입니당~", je);
}catch(Exception e){
Log.E("execption", "파일이 없나봐용", e);
}
}
휴 일일이 쓰려니 힘드네요;; 위와 같이 코딩을 하여 json파일에 들어있는 값들을 적용할수가 있습니다.
이방법 알아내느라 아주 쬐금 고생을 했드랬죠 -_-;; 머라가 나빠서 이해력 속도가 느린;;;
이미지 사용법에 관해서는 여기 훌륭하신 분들의 강좌를 보고 좀 변형해서 했기에;;
제방법으로 하다가 머리가 아프실지 몰라 감히 올리지는 못하였네요 ㅎㅎㅎ
이상으로 json 파일 사용에 대한 간단한 글을 마치도록 할께요...
허접한 글이지만 저처럼 헤매시는 분들에게 조금이나마 도움이 되었으면 좋겠네요~~^^;;
'안드로이드 > Parser' 카테고리의 다른 글
안드로이드 htmlParser 이용한 로젠택배 조회 서비스 만들기. (0) | 2011.02.11 |
---|---|
Data Feed / RSS 예제 (0) | 2011.02.11 |
Jericho API (0) | 2011.02.11 |
[RssReader] XMLPullParser 이용하기. (7) | 2011.02.11 |
[HTML Parsing] 해당 페이지의 모든 문자 출력 (0) | 2011.02.11 |
Comments