2013-05-17 1 views
1

리플렉션을 사용하여 런타임에 값 객체 속성을 설정하고 있습니다. 모든 것이 문자열이라면이 질문을하지 않을 수도 있지만 그렇지 않습니다. json을 반환하는 웹 서비스가 있고 객체를 채우기 위해 서비스에서 반환 된 json을 사용하려고합니다. json 문자열에 정렬 된 키가 들어있는 alphabeticalKeys라는 ArrayList라는 문자열이 있습니다. 여기에 내가 동적 객체 (사용자)를 채우는 데 사용하고있는 코드입니다 : JSON 데이터 세트에서리플렉션을 사용하여 유형을 알 수없는 속성 값을 설정할 수 있습니다.

for(String fieldName : alphabeticalKeys){ 
    Log.d("JSON:" + fieldName, json.getString(fieldName)); 
    Field f = userClass.getDeclaredField(fieldName); 
    f.setAccessible(true); 
    f.set(user, jsonObject.get(fieldName)); 
} 

, 문자열, 두 배 더있다. 이것은 반환되는 객체 유형이 컴파일 타임에 알려지지 않은 팩토리 클래스의 일부입니다. 또한 json 필드의 데이터 유형은 필요한 객체의 유형에 따라 다를 수 있습니다.

json 출력은 반환 된 개체의 필드 이름과 일치하므로 json 출력에서 ​​반환 된 다른 데이터 형식을 처리 할 수있는 방법을 찾고 있습니다. 누군가 제안 할 수 있습니까?

Thx! Vivian

+2

http://docs.oracle.com/javase/tutorial/reflect/member/fieldTypes.html –

답변

0

리플렉션을 사용하여 속성 값을 설정하는 데 도움이되는 라이브러리가 필요하다면 적절한 유형으로 변환 할 수 있습니다. 예를 들어, Spring Framework의 BeanWrapperApache Commons BeanUtils과 같습니다.

json과 Java 객체 간의 매핑을 처리하는 json 라이브러리도 있습니다. 예 : GsonJackson. 이렇게하면 json 구조가 Java 객체 구조와 거의 일치하는 경우 특히 편리합니다.

관련 문제