2010-11-05 2 views
4

Я пишу приложение для Android, которое требует привязки объекта JSON к объекту домена с ключами из JSON в качестве переменных экземпляра. Поскольку существует несколько организаций домена, каждый с различными переменными экземпляра, что JSON необходимо связать в приложении, я хотел бы написать метод, как тыс следующее:Java Reflection - получить все имена переменных экземпляра класса

  1. Loop через все переменные экземпляра из domain
  2. Если в JSON существует ключ с именем переменной экземпляра, возьмите значение для этого ключа из JSON и установите переменную экземпляра домена с этим ключом, равным этому значению.

Причина, по которой я заинтересован в выполнении привязки класса к JSON, заключается в том, что если JSON по какой-то причине изменится, я не хочу, чтобы он нарушил приложение, когда переменная экземпляра не существуют в домене приложения для конкретного ключа JSON.

Заранее благодарим за любую помощь!

ответ

3

Скорее всего, вы хотите использовать библиотеку json, которая сделает это за вас. Jackson является хорошим, который также используется Spring MVC.

Чтобы ответить на ваш вопрос, вы можете использовать getDeclaredFields() для класса и использовать java.lang.reflect.Modifier.isStatic(), чтобы проверить, является ли поле статическим.

private static class Foo { 
    private static long car; 
    private int bar; 
    private String baz; 
} 

public static void main(String[] args) { 
    for (Field field : Foo.class.getDeclaredFields()) { 
     if (!Modifier.isStatic(field.getModifiers())) { 
      System.out.println("Found non-static field: " + field.getName());     
     } 
    } 
} 

Это напечатает:

Found non-static field: bar 
Found non-static field: baz 
0

oksayt's answer правильно, но я бы его с зерном соли. Не каждое поле содержит свойство, которое должно публиковаться публично. Механизм использования - Java Beans Introspector. Вы можете использовать мои ответы на эти вопросы, как предыдущие ссылки:

Дополнительная Артикул:

+0

будет ли это работать на Android? – necromancer

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