2012. 7. 26. 15:39

멤버십 과제중 프로토콜 맞추기가 너무 시간이 오래 걸림에 있어 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;

}


}



Posted by k1rha