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 적 특성을 어느 정도 지킬 수 있습죠. ㅎ
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] LockScreen 과 Activity 생명주기에 대한 관계 (0) | 2012.10.26 |
---|---|
[android] MapView Overlay onTab & multitouch zoom in&out conflict 해결법 (0) | 2012.10.26 |
[android] camera의 setPreviewSize 에서 발생하는 java.lang.RuntimeException: setParameters failed (2) | 2012.10.26 |
[jni] jni 사용시 주의점. (0) | 2012.10.26 |
[android] native( JNI ) vs. java 성능 비교 (0) | 2012.10.26 |
댓글