2010-11-05 61 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

相关问题