2013-05-13 2 views
0

JSON 웹 서비스를 통해받은 데이터에서 개체 속성을 채워야하는 작업이 있습니다. 속성 이름은 JSON 키에 매핑됩니다. 객체를 채우려는 시도에서 다음 코드를 사용하지만이 행에 도달하면 앱이 다운됩니다.리플렉션을 사용하여 속성을 동적으로 설정할 때의 문제

 while(looper.hasNext()){ 
      String key = looper.next(); 
      String val = json.get(key).toString(); 
      user.getClass().getDeclaredField(key).set(user, val); // crash 
     } 

객체를 사용자라고합니다. 키 변수가 사용자 개체의 속성과 일치하는지 확인했습니다. 이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 감사!

+0

당신이 GSON 알고 있다면 확실하지 접근 당신의 분야를 설정해야합니다. 그것은 당신이하려는 일을하고 그것은 정말로 잘 작동합니다. 나는 그것을 밖으로 체크 아웃하는 것이 좋습니다. – Krylez

답변

2

당신은

Field field = user.getClass().getDeclaredField(key); 
if (field != null) { 
field.setAccessible(true); 
field.set(user, val); 
} 
+0

필드가 private/protected/package (공개가 아님) 인 경우 액세스 할 수있는 항목이 필요하지만 키가 존재하지 않으므로 getDeclaredField (key)가 null을 반환하는 경우가 더 많습니다. - 블랙 벨트의 코드도이를 처리합니다. 그래도! – Javawag

관련 문제