본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] NameValuePair 에 object 전달하는 방법

by 돼지왕 왕돼지 2012. 10. 26.
반응형



NameValuePair 에 object 전달하는 방법

- HTTP request 를 보낼 때 POST 방식은 보통 List<NameValuePair> 를 만들어서 Entity 로 전달을 하곤 합니다. NameValuePair 의 Concrete class 인 BasicNameValuePair 는 보통 String 만을 전달할 수 있죠. 하지만 경우에 따라서 array 라던지, Object 를 보낼 경우도 있습니다. 예를 들면 이런 것이죠.

name : "돼지왕왕돼지"
phone : "010-1234-5678"
friends : { name : "모함왕왕돼지", phone : "010-1111-2222" }, { name : "추적왕왕돼지", phone : "010-2222-2222" } 


요런 경우에는 friends 안에 저 string 자체를 넣어줘야 하는데, Java 를 이용하고, name 과 phone, friends 가 Person 이라는 class 의 attribute 라면 friends 쪽을 NameValuePair 에 넣는 것이 어려워집니다. 그렇다고, for 문을 돌면서 저 스트링을 만드는건 OOP 적이지 않아보여서 (추잡해보이는..) 좋지 않죠. 실수를 하기도 쉽고요.

for( int i=0; i < friends.size(); i++ ){
   result += "{name:" + friends.get( i ).getName() + ", phone : " + friends.get( i ).getPhoneNumber() + " }"
   if ( i != friends.size() - 1 )
      result += ",";


- 그럼 어떻게 하는게 OOP 스럽고 나이스해보일까요? 데이터 처리에 익숙하신 분들은 아시겠지만, 저 데이터 형태는 JSON 입니다. 그래서 JSONObject 를 이용하는 것이 좋습니다.

public String getJSONString(){
   try{
      JSONObject json = new JSONObject();
      json.put( "name", getName() );
      json.put( "phone", getPhoneNumber() );
      return json.toString();
   }
   catch( Exception e ){
      return null;
   }
 


위와 같이 getJSONString() 함수를 구성해주시면, 나름 clear 하면서 OOP 적 특성을 어느 정도 지킬 수 있습죠. ㅎ



도움이 되셨다면 손가락 꾸욱~ ( 로그인 필요 x )



반응형

댓글