2013-05-17 3 views
1

Я использую отражение для задания свойств объекта значения во время выполнения. Если бы все было строкой, я не могу задавать этот вопрос, но это не так. У меня есть веб-сервис, который возвращает json, и я хочу использовать json, возвращаемый службой для заполнения объекта. У меня есть ArrayList строк, называемых alphabeticalKeys, который содержит отсортированные ключи в строке 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 соответствует именам полей в возвращаемом объекте, поэтому я ищу способ обработки различных типов данных, возвращаемых в выход json. Может ли кто-нибудь предложить предложение?

Thx! Vivian

+2

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

ответ

0

Доступны библиотеки, позволяющие устанавливать значения свойств с использованием отражения, при необходимости преобразовывая их в соответствующий тип. Например, Spring Framework BeanWrapper и Apache Commons BeanUtils.

Существуют также библиотеки json, которые будут обрабатывать отображение json в/из объектов java. Например, Gson и Jackson. Это может облегчить работу, особенно если структура json тесно связана с структурой объекта java.

Смежные вопросы