2010-11-05 35 views
4

我在寫一個android應用程序,它需要將JSON對象綁定到一個域實體中,使用來自JSON的鍵作爲實例變量。由於有幾個域實體,各有不同的實例變量的JSON需要綁定到應用程序,我想編寫一個方法,例如部份以下內容:通過從所有的實例變量Java反射 - 獲取一個類的所有實例變量名稱

  1. 循環域
  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 Bean Introspector。你可以用我的答案,這些問題以前作爲參考:

序號:

+0

這將工作在android? – necromancer 2011-12-22 20:20:34

相關問題