멤버십 과제중 프로토콜 맞추기가 너무 시간이 오래 걸림에 있어 JSON 규약으로 통신을 맞추기로 했다.
게임 개발자의 편의를 맞추기 위해 JSON 방식을 좀더 사용하기 편하게 객체화 시켜 보았다.
이 포스팅은 오로지 필자가 개인용도로 만든 것이기 때문에, 다른 사용자에게는 오히려 불편할 수 있음을 미리 전한다.
Main Activity
JsonHandler json = new JsonHandler(); json.putJsonInit(); //json 초기화 부분.. 값을 입력하기전 반드시 해야한다.
json.putJson("key1","test1"); //key 값과 value 값을 이어서 필요할때마다 추가해 줄수 있다. json.putJson("key2","test2"); json.putJson("key3","test3");
String aaa = json.putJsonFinish(); //obj 를 다만들었으면 그것을 array에 추가하는 부분이다. 필요에 따라서 여러개의 오브젝트를 배열로 추가해주는 방식으로 변경할 수 있다. Log.e("check"," JSON FINAL STRING "+aaa); //JSON ARRAY 전체 문자열 출력
json.getJsonInit(aaa); //JSON array 안에 obj 형식으로 들어오는 JSON 만 파싱 가능하다.
Log.e("result value",":::: resutl : "+json.getJson("key1")); //getjson 으로 값을 가져 올 수 있다. Log.e("result value",":::: resut2 : "+json.getJson("key2")); |
JsonHandler.java
package JsonHandler; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.util.Log; public class JsonHandler { String json_string = null; String[] jsonGet = new String[20]; String json_ex = "[{\"key01\":\"aaaa\",\"key02\":\"bbbb\"}]"; JSONArray ParseJsonArray = null; JSONObject ParsejsonRoot = null; // 0번째 라인...다중 배열시엔 for문
JSONArray combineJsonArray = null; JSONObject combineJsonObject = null;
public JsonHandler() { ParseJsonArray = null; ParsejsonRoot = null; combineJsonArray = null; combineJsonObject = null; }
/*JSON 에서 파싱된 값을 가져오기 위한 메소드 */ public void getJsonInit(String _jsonValue) { try { ParseJsonArray = new JSONArray(_jsonValue); ParsejsonRoot = ParseJsonArray.getJSONObject(0); } catch (JSONException e) { e.printStackTrace(); } } public String getJson(String _key) { String result=null; try { result = ParsejsonRoot.getString(_key); //소켓 메소드 쪽으로 호출 } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } return result; }
/*JSON 으로 만들기 관련된 메소드들 */
public void putJsonInit(){ combineJsonObject = new JSONObject(); }
public void putJson(String _key,String _value){ try { combineJsonObject.put(_key, _value); } catch (Exception e) { Log.e("JSON Combine", ":::::array Error " + e.toString()); } }
public String putJsonFinish(){ combineJsonArray = new JSONArray(); String result = null; if(combineJsonObject.length()<2){ result = "Object is empty";
}else{ combineJsonArray.put(combineJsonObject); result = combineJsonArray.toString(); //소켓으로 쏴주기 } return result; } } |
'Android_Programma' 카테고리의 다른 글
[ Android ] Custom ListView Library (0) | 2012.08.02 |
---|---|
[ Android ] Thread 에서 Main UI 변경하기 Handler 사용하기 예제 코드 (0) | 2012.07.30 |
[ Android , Java ] IOCP client 구현 (0) | 2012.07.26 |
[ Android ] Thread 에서 MainActivity UI 쓰레드 참조 시 오류와 해결법 (0) | 2012.07.26 |
[ Android ] Json 방식으로 묶기. (0) | 2012.07.18 |